利用消息机制实现.NET AOP(面向方面编程) --三种实现代码下载及说明


文件下载

文件说明:
1、压缩文件包含一个VS2005工程,内含四个项目。
2、第一个项目为DotNetAOP.SingleRealProxy,为使用RealProxy和ProxyAttribute实现的简单AOP实现
3、第二个项目为DotNetAOP.NestedRealProxy,为使用嵌套RealProxy实现多个消息截获后利用代理多处对消息进行处理,但由于一个对象有两个RealProxy会出异常,所以这个实现是不成功的,不过有兴趣的朋友可以对它进行少量修改,通过委拖或自定义的消息接收器来完成消息处理链。
4、第三个项目为DotNetAOP.MessageSinkWithRealProxy,为使用RealProxy调用MessageSink链来实现对消息附加多个关注者链。具体实现如下:
a) Framework目录下为链式消息处理框架
b)TerminatorSink.cs为消息链的终结器,它需要提供一个Delegate来最终调用堆栈结构。
c)AOPProxyAttribute.cs继承自ProxyAttribute,在它的CreateInstance方法中,我们返回一个被MssageChainProxy代理的对象。
d)ObjectWithAspect.cs为需要AOP功能的类的基类,它从ContextBoundObject继承,并被应用了AOPProxyAttribute,这样就会使得它的对象自动被MessageChainProxy代理。
e)AspectAttribute.cs为所有要注入的Aspect的基类,它是静态类,需要子类提供CreateAspectSink方法。
f)MessageChainProxy.cs是最重要的类,它从RealProxy继承,其Invoke方法根据应用在对象身上的AspectAttribute构建一个以TerminatorSink结束的消息处理链,这样就使得多个Aspect得以一个接一个的处理消息。而且它实现了TerminatorSink所需的Delegate,完成与内存堆栈的交互。
g)Demo目录下为应用代码,实现一个处理器需要两个类,一个继承自IMessgeSink类,在SyncProcessMessage方法中实现对功能注入;还需要一个AspectAttribute的实现类,用于给MessageChainProxy提供MessageSink。我已经实现了两组处理器,可以以此为模板加入自定义功能的处理器。
5、第四个项目为DotNetAOP.ServerContextSink,为使用四种上下文接收器中的ServerContextSink来实现对消息附加多个关注者链。实现思路和上一项目类似,只是Sink注入通过继承自ContextAttribute的ObjectSinkChainAttribute建立新的上下文属性ServerContextSinkChainProperty,再由ServerContextSinkChainProperty组装接收器链来完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值