AOP在.net停的实现

AOP在.net下的实现
如题,有没有这方面的框架例子?
aop 框架

------解决方案--------------------
http://www.cnblogs.com/wayfarer/articles/256909.html
------解决方案--------------------
看这个:
http://weblogs.asp.net/podwysocki/archive/2008/03/28/understanding-aop-in-net.aspx

引用 Understanding AOP in .NET:
实现AOP的7种方式:

1。Remoting Proxies
优点:由于有.Net框架支持,容易实现
缺点:重量级较大,只能用于interface或MarshalByRefObjects

2。Deriving from ContextBoundObject
优点:最容易实现,原生支持调用截获
缺点:非常耗费性能

3。编译时生成子类
产品:( Rhino Proxy )
优点:容易理解
缺点:只能用于Interfaces 或 virtual方法

4。运行时生成子类
产品:( Castle Dynamic Proxy )
优点:容易理解,非常灵活
缺点:实现复杂 (但已有现成类库),只能用于Interfaces 或virtual方法

5。挂钩分析用的API
产品:( Type Mock )
有点:非常强大
缺点:性能存在疑问?实现复杂(用到COM,需要另一个运行程序,等等)

6。编译时IL修改 
产品:( Post Sharp / Cecil )
优点:非常强大,性能非常好。
缺点:非常难以实现

7。运行时修改IL
产品:( Post Sharp / Cecil )
优点:非常强大,性能很好
缺点:非常难以实现

个人推荐PostSharp/Cecil,好用且高效。
------解决方案--------------------
和web应用框架无关。
通常自己写太费功夫,都是用现成的。多数类库都是dynamic proxy方式,如:
spring.net
Castle DynamicProxy
微软企业库的 Unity
FluentAOP

动态代理方式的缺点就是只能用于接口或虚方法,要事先设计好,不是很灵活。
要好用的话还是IL-Weaving方式的,就是PostSharp/Cecil,不过PostSharp是收费的。
当然这种方式下由于自由度很大,很容易把程序搞乱,调试阅读什么的都困难,所以一定要有节制,在适合场合使用。

------解决方案--------------------
在下一版的C#中,AOP以及元编程会有非常优雅的实现,届时什么Spring.net估计都得死掉。具体我不能透露太多。