在这里列表了我想到的在你的应用程序中加入AOP支持的所有方法。这里最主要的焦点是拦截,因为一旦有了拦截其它的事情都是细节。
Approach 方法 | Advantages 优点 | Disadvantages 缺点 |
Remoting Proxies 远程代理 | Easy to implement, because of the .Net framework support 容易实现,因为有.NET框架的支持。 | Somewhat heavyweight 微显重量级 仅在接口或MarshalByRefObjects 上使用 |
Derivingfrom ContextBoundObject 从ContextBoundObject 派生 | Easiest to implement 很容易实现 原生支持调用拦截 | Very costly in terms of performance 非常昂贵的性能代价 |
Compile-time subclassing 编译时子类化 | Easiest to understand 很容易理解 | Interfaces or virtual methods only 仅用于接口或虚方法 |
Runtime subclassing 运行时子类化 | Easiest to understand 很容易理解 非常灵活 | Complex implementation (but alreadyexists) 复杂的实现(已经实现) 仅用于接口或虚方法 |
Hooking into the profiler API 分析 API钩子 | Extremely powerful 极端强大 | Performance? 性能未知 复杂实现(COM API,需要单独运行等) |
Compile time IL-weaving 编译时 IL织入 | Very powerful 非常强大 良好的性能 | Very hard to implement 实现非常困难 |
Runtime IL-weaving 运行时 IL织入 | Very powerful 非常强大 朗好的性能 | Very hard to implement 实现非常困难 |