DProxy介绍 – 一种高性能轻量级AOP开发组件(.NET 1.1)
2005-11-28 12:48
337 查看
现在体会到什么是最痛苦的事情,刚才在Blog上直接写文章,俺一直认为这种倒霉的事情不可能发生在这个时候,结果快要结束的时候突然弹出一个错误对话框,紧接着是浏览器毫无预兆的自动关闭………………….又一次从头到脚的体会到随时保存的确是一个好习惯。
再来一次唧唧歪歪(就当刚才写的是草稿)
感觉最近大家讨论AOP的话题越来越多了,于是呢,俺也来凑个热闹,俺花了些时间,也对AOP方面琢磨了一下,这一琢磨呢,就琢磨出来一个东西,什么东西,就是AOP。目前大家见到的AOP平台一大堆,俺就不在这里列举了。并且考虑到到现在为止了解Aspect#的人们还是挺多,为了利用这一资源,俺的DProxy也是提供了类似Aspect#的接口,只有少许地方的不同。因此你如果了解Aspect#的话,那么应该对下面的内容应该比较熟悉。
虽说是轻量级,但也实现了Aspect#的两大拳头功能: Mixin 和 Intercept
为了让所有的.NET玩家能够快速了解到什么是Mixin和Intercept,俺给出下面两个实验场景
试验场景1:俺写了个客户管理的程序,俺想将每个操作做为日志记录下来,于是乎写了下面几行代码
public class Customer
public class Log
static void Main(string[] args)
public class LogInterceptor : IInterceptor
public class Customer
[STAThread]
static void Main(string[] args)
Customer这个类一下子就变得清爽多了,屏幕输出依旧:
public class Customer
[STAThread]
static void Main(string[] args)
public class Customer
public interface IGetName
public class GetAnyName : IGetName, IProxyAware
[STAThread]
static void Main(string[] args)
看看结果如何
实现的功能是一样的哦,但是这可是把数据层和逻辑层分开了,而且代码的重用效率非常之高,用过Aspect#的人因该都知道。
无聊至极,俺用俺的DProxy和Aspect#做了一个测试,结果如下:
Aspect#创建的时候花的时间比较高是因为其内部有一个语言分析器,估计花了不少时间,而DProxy则没有。
因为俺不知道Aspect#动态生成的代码是啥样的,因此俺也不知道为什么Aspect#在调用的时候要花那么长的时间,DProxy生成的代理使用的都是直接调用和接口调用,估计Aspect#使用的是Invoke。
关于直接调用,接口调用,Invoke等之间的性能对比可以参考MSDN的文章:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp02172004.asp
目前DProxy尚在开发过程中,如果今后有了可供使用的版本,我会通知大家。
2006/02/13 更新:
DProxy 更名为 Sophus 并在 http://research.grapecity.com.cn/cs/files/7/sophus/default.aspx 提供免费下载
再来一次唧唧歪歪(就当刚才写的是草稿)
感觉最近大家讨论AOP的话题越来越多了,于是呢,俺也来凑个热闹,俺花了些时间,也对AOP方面琢磨了一下,这一琢磨呢,就琢磨出来一个东西,什么东西,就是AOP。目前大家见到的AOP平台一大堆,俺就不在这里列举了。并且考虑到到现在为止了解Aspect#的人们还是挺多,为了利用这一资源,俺的DProxy也是提供了类似Aspect#的接口,只有少许地方的不同。因此你如果了解Aspect#的话,那么应该对下面的内容应该比较熟悉。
虽说是轻量级,但也实现了Aspect#的两大拳头功能: Mixin 和 Intercept
为了让所有的.NET玩家能够快速了解到什么是Mixin和Intercept,俺给出下面两个实验场景
试验场景1:俺写了个客户管理的程序,俺想将每个操作做为日志记录下来,于是乎写了下面几行代码
public class Customer
public class Log
static void Main(string[] args)
public class LogInterceptor : IInterceptor
public class Customer
[STAThread]
static void Main(string[] args)
Customer这个类一下子就变得清爽多了,屏幕输出依旧:
public class Customer
[STAThread]
static void Main(string[] args)
public class Customer
public interface IGetName
public class GetAnyName : IGetName, IProxyAware
[STAThread]
static void Main(string[] args)
看看结果如何
实现的功能是一样的哦,但是这可是把数据层和逻辑层分开了,而且代码的重用效率非常之高,用过Aspect#的人因该都知道。
无聊至极,俺用俺的DProxy和Aspect#做了一个测试,结果如下:
Aspect#创建的时候花的时间比较高是因为其内部有一个语言分析器,估计花了不少时间,而DProxy则没有。
因为俺不知道Aspect#动态生成的代码是啥样的,因此俺也不知道为什么Aspect#在调用的时候要花那么长的时间,DProxy生成的代理使用的都是直接调用和接口调用,估计Aspect#使用的是Invoke。
关于直接调用,接口调用,Invoke等之间的性能对比可以参考MSDN的文章:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp02172004.asp
目前DProxy尚在开发过程中,如果今后有了可供使用的版本,我会通知大家。
2006/02/13 更新:
DProxy 更名为 Sophus 并在 http://research.grapecity.com.cn/cs/files/7/sophus/default.aspx 提供免费下载
相关文章推荐
- .NET 4 实践 - 使用dynamic和MEF实现轻量级的AOP组件 (3)
- 我心中的核心组件(可插拔的AOP)~调度组件quartz.net续~任务管理器的开发
- [Asp.Net Core轻量级Aop解决方案]AspectCore Project 介绍
- RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍
- RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍
- RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍
- RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍
- RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍
- 工作流程组件介绍 ━ RDIFramework.NET ━ .NET快速信息化系统开发框架
- asp.net服务器组件开发给System.Web.UI.WebControls.Label增加单击事件
- (转)ASP.NET自定义控件组件开发 第一章 第三篇
- 【转】Asp.NET大文件上传组件开发总结(五)---上传进度信息的显示
- TRS在.NET下的开发组件 TRSADO.NET
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 报表系统介绍
- 【转载】Asp.NET大文件上传组件开发总结_NET2.0源码下载。
- Lucene.Net 2.3.1开发介绍 —— 阅读索引
- 书讯 —《庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术》第二次印刷已经出版发行
- 书讯 —《庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术》第二版
- AOP技术介绍--(.Net中关于AOP的实现)