Difference between revisions of ".NET AOP"

From Richard's Wiki
Jump to: navigation, search
(Surveys of .NET AOP Frameworks)
(Surveys of .NET AOP Frameworks)
Line 7: Line 7:
 
* [http://csharp-source.net/open-source/aspect-oriented-frameworks Open Source Aspect-Oriented Frameworks in C#] (CSharp-Source.net)
 
* [http://csharp-source.net/open-source/aspect-oriented-frameworks Open Source Aspect-Oriented Frameworks in C#] (CSharp-Source.net)
 
* [http://www.codeproject.com/KB/cs/AOP_Frameworks_Rating.aspx Rating of Open Source AOP Frameworks in .Net] (CodeProject Aug 2008)
 
* [http://www.codeproject.com/KB/cs/AOP_Frameworks_Rating.aspx Rating of Open Source AOP Frameworks in .Net] (CodeProject Aug 2008)
* [http://www.neovolve.com/post/2009/04/08/Styles-of-AOP.aspx Styles of AOP] (Has a useful table of AOP immplementation methods)
+
* [http://www.neovolve.com/post/2009/04/08/Styles-of-AOP.aspx Styles of AOP] (Has a useful table of AOP immplementation methods, reproduced below:)
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
!  # 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)
 +
|}

Revision as of 01:21, 22 July 2009

.NET Aspect Oriented Programming Frameworks

Surveys of .NET AOP Frameworks

# 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)