.Net framework

1.websharp

2.Nhibernate

3.castle

4.Emit

目前在.Net平台下的AOP大部分仍然处于最初的开发阶段,各自发布的版本基本都是beta版。其中较有代表性的AOP工具包括Aspect#,Spring.Net,Eos等。

Aspect#是基于Castle动态代理技术实现的。Castle动态代理技术利用了.Net的Emit技术,生成一个新的类去实现特定的接口,或者扩展一个已有的类,并将其委托指向IInterceptor接口的实现类。通过Castle动态代理技术,就可以拦截方法的调用,并将Aspect的业务逻辑织入到方法中。利用Castle动态代理技术,最大的缺陷是它只对虚方法有效,这限制了Aspect#的一部分应用。

Spring.Net从根本意义上来说,是对Spring工具从Java平台向.Net平台的完全移植。它在AOP的实现上与Spring几乎完全相似,仍然利用了AOP联盟提供的拦截器、Advice等实现AOP。Spring.Net的配置文件也与Spring相同。

Eos采用的是静态织入的技术。它提供了独有的编译器,同时还扩展了C#语法,以类似于AspectJ的结构,规定了一套完整的AOP语法,诸如aspect,advice,before,after,pointcut等。Eos充分的利用了.Net中元数据的特点,以IL级的代码对方面进行织入,这也使得它的性能与其他AOP工具比较有较大的提高。

原文地址:https://www.cnblogs.com/windstore/p/1588896.html