【发布时间】:2013-08-28 05:23:26
【问题描述】:
回到我的老问题here:
但我真的很想拦截消息并拥有一个处理程序实例,并且能够影响消息是否应该发送到处理程序。基本上是一个“周围的建议”。
现在最传统的实现方式是通过目标对象的动态继承和覆盖虚拟方法。由于缺乏文档,我无法判断 NServiceBus 是否创建或构建其消息处理程序实例。如果它建立起来了,那么它就不能动态继承,所以大多数 AoP 框架可能是不可能的,否则大多数流行的 DI 容器应该可以解决问题。
但是,使用 Saga 处理程序进行测试时,似乎 NServiceBus 是在构建而不是创建新的,因为需要默认构造函数,它指向 NServiceBus 手动激活类。
是的,我意识到我可以使用良好的 ole' OOP 来解决相同的问题,但我通常更喜欢 AoP 以获得更好(更少)的耦合。
【问题讨论】:
-
我不认为这真的是 NServiceBus 问题。 NServiceBus 在后台使用了一个 IoC 容器(如果您愿意,您可以切换 IoC 实现)并且大多数 IoC 容器将允许您拦截或装饰类型的创建。使用 NServiceBus,您可能想要装饰您的消息处理程序。
标签: c# .net aop nservicebus soa