2015-09-18 35 views
2

Simplified ...我們使用NServiceBus來更新存儲。NServiceBus和WCF,他們如何相處?

在我們的傳奇,我們首先從閱讀我們的存儲數據並更新數據,並把它再次回到存儲容量。NServicebus實例在一個窗口服務selfhosted。調用存儲在其自己的程序集('assembly1')中分離。

現在我們還需要通過WCF從我們的存儲中進行同步讀取。在某些情況下,在傳奇故事中進行更新時需要讀取相同的內容。

我有我的觀點很清楚,但也許我錯了,所以我問這個問題...

我們應該建立一個使用「assembly1」的副本單獨的WCF服務? 或者,WCF實例主機nservicebus? 或者,還有更好的方法來做到這一點嗎?

正是在這樣兩個端點一個,WCF的同步調用和託管nservicebus(已存在),現在的windows服務。

+0

*在某些情況下,會有與在傳奇更新時需要的讀取相同的內容* - 您的意思是傳奇將會調用WCF服務嗎? –

+0

這是一種方法,但目前沒有WCF服務(尚未... TBD)。傳奇人物直接通過'assembly1'調用存儲。事情以相反的順序完成。沒有一個完整的體系結構,現在我們需要做出正確的選擇。 – Per

+0

由於架構原因或功能原因(例如,您需要將您的端點公開爲WCF服務),您是否要讓WCF服務獨立於NSB端點?對不起,但我不明白你最終想達到什麼目的。 WCF服務是被NSB使用還是隻是通過WCF向你的數據庫提供另一條路徑,並擔心爭用等問題? –

回答

2

我看不出有什麼理由在您的問題或評論中分爲兩個截然不同的端點。這聽起來像是你正在描述一個邏輯服務,而我的默認位置是在一個進程中託管每個邏輯服務。這通常是最簡單的方法,因爲它使部署和故障排除更容易。

編輯

不知道這是有益的,但我現在的客戶端運行NSB在IIS託管WCF終結。所以命令通過NSB消息處理,而查詢仍然通過WCF公開。迄今爲止,我們沒有任何問題在一個過程中將兩者聯繫在一起。

+0

這對我的疑惑很有幫助。初始設計完成後,進入一個項目並不容易...... – Per

2

一般來說,一個傳奇應該只更新自己的狀態(數據屬性)併發送消息到其他端點。它不應該更新其他狀態或進行RPC調用(如WCF)。

之前給予更具體的建議,這將是最好的瞭解更多有關「assembly1」正在更新你的英雄傳奇的具體職責和數據。