zoukankan      html  css  js  c++  java
  • AOP在 .NET中的七种实现方法

    AOP在 .NET中的七种实现方法

    Here are all the ways that I can think of to add AOPto your application. This mostly focus on the interception side of things,because once you have that, everything else it just details.

    在这里列表了我想到的在你的应用程序中加入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

    实现非常困难

    文献来源:http://ayende.com/blog/2615/7-approaches-for-aop-in-net

  • 相关阅读:
    [Javascript] Use a custom sort function on an Array in Javascript
    [Unit Testing] Fundamentals of Testing in Javascript
    [WASM] Create a New Rust/Webpack Project using the rust-webpack Template
    [Adobe Analytics] Segments types
    win7系统远程连接其它计算机,并且向远程机传输文件
    移动应用数据统计分析平台汇总
    设计模式(策略模式)
    程序员与卓别林
    我的Android进阶之旅------>HTTP 返回状态值详解
    OSX: 真的吗?Mac OS X重大漏洞 改时钟获系统最高权限
  • 原文地址:https://www.cnblogs.com/ranran/p/4164179.html
Copyright © 2011-2022 走看看