今天开始考虑AOP的C#实现,对于静态的Weavor方法迷惑中。在源代码级别的编织是采用像AspectJ那样做呢,还是另辟蹊径?一开始就要让我头痛了。
AspectJ的方式是:对源代码进行解析,然后在加入点(JoinPoint)插入Aspcet的代码,形成中间文件,再编译成最终文件。这种方法产生的性能比较好,有一个缺陷就是如果修改了weaving的规则,就要重新编译。(或许可以采用某些设计模式来消除这个弱点)
另外一种思路就是一开始就采用设计模式,在JontPoint处插入delegate,以后如果需要修改规则,不需要重新编译源代码,只要通过修改xml的aspect描述文件即可。缺点是delegate有系统开销,所以性能不如前面的方法。
真的很难取舍,是不是两种方法都支持呢?头痛ing...

博客围绕AOP的C#实现展开,介绍了两种实现思路。一是类似AspectJ的方法,对源代码解析后在加入点插入代码,性能好但修改规则需重新编译;二是采用设计模式,在加入点插入delegate,修改规则无需重新编译,通过修改xml文件即可,但性能稍差,作者为此难以抉择。
1744

被折叠的 条评论
为什么被折叠?



