2010-05-30 43 views

回答

1

需要IMessage接口,以便NServiceBus可以自动在串行器中注册这些类型。当使用域事件时,不建议直接在总线上发布它们 - 相反,域事件处理程序会将它们转换为服务级事件(它继承IMessage)。

+1

嘿Udi,感谢您的快速回复! 当然,它是一个标记接口 - 但不得不重复域消息来服务消息增加了相当多的错误 - 95%的时间是1:1。我一定会想要避免这种情况,打字不是我最好的技能。 如果有某种可插拔的会议模块会告诉总线如何识别有效的消息(MEF,名称空间,类后缀,我自己的接口......),那将是非常好的。 我正在考虑使用一些像PostSharp这样的编织工,但我讨厌它为这个解决方案增加了复杂程度。 – Jan 2010-05-30 03:13:09

+3

你可以使用类似AutoMapper的东西。 – 2010-05-31 03:16:02

+0

我喜欢这个想法。如果只有MI ... – Jan 2010-08-05 19:15:27

0

您可能可以创建自己的接口来实现NSB标记接口,然后将NSB依赖项ILMerge到您自己的DLL中。这应该允许您只需要引用您自己的Dll并且不需要对NSB的外部引用。

它什么NSB确实为自己的依赖,所以你应该能够延长的想法,一定要,虽然检查出这种做法的缺陷 - 乌迪的博客上讲述它最近

http://www.udidahan.com/2010/08/01/cautiously-merging-il/

0

半年后来,这个问题还没有解决(修正/改进)??

可能解决方案摘要: 1)ILMerge或.. 2)自定义包装消息的自定义分派器。

所有这些都是因为IMessage标记接口。

5

我刚刚注意到Udi正在给NServiceBus 3.0添加一个Unobtrusive Mode。看来 将解决这个问题。甚至有一个sample writeup,但你必须在此时(2012年2月)取消最新的github。如果你愿意忍受一些潜在的不稳定性来获得纯粹的POCO消息,你可以试一试。