在这里列表了我想到的在你的应用程序中加入AOP支持的所有方法。这里最主要的焦点是拦截,因为一旦有了拦截其它的事情都是细节。
Approach 方法 |
Advantages 优点 |
Disadvantages 缺点 |
Remoting Proxies 远程代理 |
Easy to implement, because of the .Net framework support 容易实现,因为有.NET 框架的支持。 |
Somewhat heavy weight Can only be used on interfaces or MarshalByRefObjects 微显重量级 仅在接口或 MarshalByRefObjects 上使用 |
Deriving from ContextBoundObject 从 ContextBoundObject 派生 |
Easiest to implement Native support for call interception 很容易实现 原生支持调用拦截 |
Very costly in terms of performance 非常昂贵的性能代价 |
Compile-time subclassing ( Rhino Proxy ) 编译时子类化 |
Easiest to understand 很容易理解 |
Interfaces or virtual methods only 仅用于接口或虚方法 |
Runtime subclassing ( Castle Dynamic Proxy ) 运行时子类化 |
Easiest to understand Very flexible 很容易理解 非常灵活 |
Complex implementation (but already exists) Interfaces or virtual methods only 复杂的实现(已经实现) 仅用于接口或虚方法 |
Hooking into the profiler API ( Type Mock ) 分析 API 钩子 |
Extremely powerful 极端强大 |
Performance? Complex implementation (COM API, require separate runner, etc) 性能未知 复杂实现(COM API,需要单独运行等) |
Compile time IL-weaving ( Post Sharp / Cecil ) 编译时 IL 织入 |
Very powerful Good performance 非常强大 良好的性能 |
Very hard to implement 实现非常困难 |
Runtime IL-weaving ( Post Sharp / Cecil ) 运行时 IL 织入 |
Very powerful Good performance 非常强大 良好的性能 |
Very hard to implement 实现非常困难 |
时间: 2024-10-13 19:28:02