2010-05-30 41 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消息,你可以試一試。