






















向切面编程的概念已经盛行很久了, 可以很好的将我们代码的各个关注方面分离开来.
比如: 事务, 日志, 异常处理, 数据缓存, 权限等等, 这些其实是可以和核心的业务逻辑分离处理的.
不知道大家有没有在项目中使用呢? 目前最盛行的要数Java移植过来的Spring.Net的框架了.
这一个框架PostSharp, 网上也有很多这个的介绍.
原理: PostSharp采用静态注入,而不是DynamicProxy的动态注入. 所谓静态注入,指的是在编译好的程序集中的类型或者某个方法里注入IL代码
(而不是在程序集的运行时注入),注入的地方称为"Join-Point".
(这个图和下面比较的一段,借用另一位网友的,特声明)
但是PostSharp是在你编译一个程序集的时候就把IL注入到程序集里去了。
PostSharp是如何起作用的呢?它是怎么把自己插入到编译器的编译生成过程的呢?
我们知道VS是通过MSBiuld来执行生成过程的,所以其实PostSharp是把自己作为一系列的Build Task来插入到生成过程的。
然后它修改了VS调用MSBiuld的默认配置。从而使VS的Build命令执行了它所指定的Task。
和以往基于 Dynamic Proxy 方式与 AOP 解决方案做个比较。
老外的好文:
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。