postsharp简介
PostSharp是一个用于在.NET平台上实现AOP的框架,相比于uniyt和spring.net框架,postsharp提供了完整的aop架构,比如,可以拦截属性,同时,postsharp使用的是静态拦截,而不是unity和spring.net的动态拦截,关于静态拦截和动态拦截下面会说,而且postsharp是较轻量的,最新稳定版本的postsharp是3.1.45,可以到下面地址去下载, http://www.postsharp.net/download,以vs插件的方式和vs,nuget无缝集成,不过,现在的postsharp分为3个版本,express,pro,ultimate版本,精简版是免费的,专业和旗舰就不免费了,看看价格,对个体程序员来说还是挺贵的,第一年购买$499(Pro版)或$799(Ultimate版),后续的支持费用大约为每年140和250,要上千大洋嘎,每当这个时候,感觉自己都可穷可穷可穷滴,~~~~~~~~~~~~~~~~~~静态拦截和动态拦截区别
静态拦截AOP的实现思想是给语言的编译器做扩展,使得在编译程序的时候编译器将相应的Aspect代码织入到业务代码的指定连接点,输出整合的结果如下图(以.net为例,postsharp既是静态拦截)当使用静态拦截时,带AOP扩展的编译器会在编译时将Aspect代码织入业务函数代码,形成整合后的IL,然后交由CLR运行
动态拦截如下图(unity和spring.net都是)
运行时AOP的实现方式是将扩展添加到运行虚拟机而不是编译器,Aspect和业务代码分别独立编译,而在运行时由虚拟机在必要时进行织入