AOP系列:AspectSharp学习
2012-04-24 11:56
183 查看
AspectSharp项目地址:AspectSharp - .NET AOP Framework
这个项目从05年开始已经没有维护了,估计现在已经没落,现在AOP用的比较多的应该是PostSharp,PostSharp使用上应该非常方便,但前段时间已经商业化运作了,仍提供社区版,但功能上有一些限制
AspectSharp现在网上较完整的例子比较少,从sourceforge下载项目源代码,里面有一个example项目,可以使用这个项目大致看一下AspectSharp的使用方式
因为下载的example项目运行时会出错,而AspectSharp使用的还是Castle.DynamicProxy.dll文件,我将AspectSharp做了点修改
1. 改成.Net Framework 3.5版本,因为新的Castle DynamicProxy使用的是3.5版本了
2. 改成使用Castle.DynamicProxy2.dll。主要是老的DynamicProxy中不少创建代理的方法、代理的使用方法都发生变化了,老的AspectSharp代码无法工作
修改之后,这篇文章中的例子以及AspectSharp中的Example项目都能正常运行,从这里下载附件可以运行这篇文章中的示例程序。但是因为新的DynamicProxy中拦截器接口机制的改变,无法确保我对AspectSharp的修改一定是正确的,因此这个下载仅用于演示目的
codeproject上面有篇.NET下开源AOP框架的对比文章:Rating of Open Source AOP Frameworks in .Net。AspectSharp在里面的评价很低,最好的是PostSharp,其次是Unity跟Spring.NET
引用命名空间:
using AopAlliance.Intercept;
using AspectSharp.Builder;
?
测试代码如下:
?
运行结果如下:
从上面可以看到,感觉AspectSharp AOP唯一有点新意的地方就是使用了antlr来定义AOP的配置语言,其实使用动态代理,或者Post Compilation的方式自己实现一下拦截也是比较容易的事情。AspectSharp中使用AOP的地方也还得采取措施对AspectEngine进行包装,整体来看这个AOP对代码不是完全透明的上面只是简单演示了一下AspectSharp的基本用法,因为使用了Castle.DynamicProxy实现AOP,因此AspectSharp也支持mixins等
这个项目从05年开始已经没有维护了,估计现在已经没落,现在AOP用的比较多的应该是PostSharp,PostSharp使用上应该非常方便,但前段时间已经商业化运作了,仍提供社区版,但功能上有一些限制
AspectSharp现在网上较完整的例子比较少,从sourceforge下载项目源代码,里面有一个example项目,可以使用这个项目大致看一下AspectSharp的使用方式
因为下载的example项目运行时会出错,而AspectSharp使用的还是Castle.DynamicProxy.dll文件,我将AspectSharp做了点修改
1. 改成.Net Framework 3.5版本,因为新的Castle DynamicProxy使用的是3.5版本了
2. 改成使用Castle.DynamicProxy2.dll。主要是老的DynamicProxy中不少创建代理的方法、代理的使用方法都发生变化了,老的AspectSharp代码无法工作
修改之后,这篇文章中的例子以及AspectSharp中的Example项目都能正常运行,从这里下载附件可以运行这篇文章中的示例程序。但是因为新的DynamicProxy中拦截器接口机制的改变,无法确保我对AspectSharp的修改一定是正确的,因此这个下载仅用于演示目的
codeproject上面有篇.NET下开源AOP框架的对比文章:Rating of Open Source AOP Frameworks in .Net。AspectSharp在里面的评价很低,最好的是PostSharp,其次是Unity跟Spring.NET
引用命名空间:
using AopAlliance.Intercept;
using AspectSharp.Builder;
?
?
从上面可以看到,感觉AspectSharp AOP唯一有点新意的地方就是使用了antlr来定义AOP的配置语言,其实使用动态代理,或者Post Compilation的方式自己实现一下拦截也是比较容易的事情。AspectSharp中使用AOP的地方也还得采取措施对AspectEngine进行包装,整体来看这个AOP对代码不是完全透明的上面只是简单演示了一下AspectSharp的基本用法,因为使用了Castle.DynamicProxy实现AOP,因此AspectSharp也支持mixins等
相关文章推荐
- PostSharp AOP学习研究(一)
- PHP系列学习之AOP
- PHP系列学习之AOP
- SSM框架系列学习总结2之Spring AOP
- AOP - AspectSharp 2.1.1.0
- AOP 系列: 使用PostSharp在.NET平台上实现AOP
- Spring学习(24)--- AOP之 Aspect instantiation models(aspect实例模式)特别说明
- spring学习笔记SpringAopAspect
- PostSharp AOP 学习研究(二)
- Spring4 学习系列之——AOP的初解
- PHP系列学习之AOP
- PHP系列学习之AOP
- 由浅入深CIL系列【目录索引】+ PostSharp AOP编程【目录索引】
- 由浅入深CIL系列【目录索引】+ PostSharp AOP编程【目录索引】
- spring Aop中aop:advisor 与 aop:aspect的区别 【爱玩酷java php 学习路径】
- AOP之PostSharp3-MethodInterceptionAspect
- PHP系列学习之AOP
- AOP之PostSharp3-MethodInterceptionAspect
- C#温故而知新学习系列之面向对象编程—对象初始化器(十五)
- AngularJs学习笔记--Guide教程系列文章索引