.NET AOP
From Richard's Wiki
.NET Aspect Oriented Programming Frameworks
- PostSharp (compile-time aspect injection (good), but LGPL or commercial license (bad))
- Policy Injection Application Block (pseudo-AOP framework, runtime aspect injection, from Microsoft P&P group, getting old...)
- Spring.NET (Runtime aspect injection via proxies)
- AOP Using Spring.NET - Part 1 (CodeProject, June 2008)
- AOP Using Spring.NET - Part 2 (CodeProject, June 2008)
Surveys of .NET AOP Frameworks
- Open Source Aspect-Oriented Frameworks in C# (CSharp-Source.net)
- Rating of Open Source AOP Frameworks in .Net (CodeProject Aug 2008)
- Styles of AOP (Has a useful table of AOP immplementation methods, reproduced below:)
# Approach | Advantages | Disadvantages |
---|---|---|
1 Remoting Proxies | Easy to implement, because of the .Net framework support | Somewhat heavy weight, Can only be used on interfaces or MarshalByRefObjec |
2 Deriving from ContextBoundObject | Easiest to implement, Native support for call interception | Very costly in terms of performance |
3 Compile-time subclassing ( Rhino Proxy ) | Easiest to understand | Interfaces or virtual methods only |
4 Runtime subclassing Castle Dynamic Proxy ) | Easiest to understand, Very flexible | Complex implementation (but already exists), Interfaces or virtual methods only |
5 Compile time IL-weaving ( Post Sharp / Cecil ) | Very powerful, Good performance | Very hard to implement |
6 Runtime IL-weaving, ( Post Sharp / Cecil ) | Very powerful, Good performance | Very hard to implement |
7 Hooking into the profiler API ( Type Mock ) | Extremely powerful | Performance?, Complex implementation (COM API, require separate runner, etc) |