7 Approaches for AOP in .Net
Here are all the ways that I can think of to add AOP to your application. This mostly focus on the interception side of things, because once you have that, everything else it just details.
| Approach | Advantages | Disadvantages |
| Remoting Proxies | Easy to implement, because of the .Net framework support | Somewhat heavy weight Can only be used on interfaces or MarshalByRefObjects |
| Deriving from 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 ) |
Extremely powerful | Performance? Complex implementation (COM API, require separate runner, etc) |
| Compile time IL-weaving ( Post Sharp / Cecil ) |
Very powerful Good performance |
Very hard to implement |
| Runtime IL-weaving ( Post Sharp / Cecil ) |
Very powerful Good performance |
Very hard to implement |

Comments
Comment preview