2009-12-18 101 views
0

首先我將描述當前狀態:
服務器由幾個WCF服務組成,託管在不同機器上的一個或多個win服務中。服務器體系結構問題。 (WCF + NServiceBus)

  1. 服務負責從不同設備接收數據。與設備的通信使用套接字來實現。服務實例模式 - 單例。
  2. 數據代理服務 - 負責按請求保存數據和共享。實例模式 - 單例。
  3. 配置服務 - 負責更改配置數據庫並使用管理控制檯(WPF應用程序,如SSMS)。處理來自控制檯,訂戶管理等的連接。實例模式 - 單例。
  4. 客戶端訪問服務 - 與上述客戶端管理非常相似,但也可以向客戶端通知新數據,並且像服務總線一樣扮演門面的角色。再單身。
  5. 身份管理服務 - 檢查權限並返回結果。辛格爾頓。

所有這些服務都與NServiceBus連接,我真的很喜歡它現在的工作方式。

但是:
太多單身。主要是因爲使用服務總線,我必須有它的單一實例。我不知道也許我可以在會話模式下使用nservice總線,但不知道如何處理所有這些服務將使用一個隊列的問題。

如果我將有300+客戶呢?單身可以變得沒有反應..

我想問一些關於這一切的批評,也許有人可以建議一些東西。

在此先感謝。
阿列克謝

回答

4

阿列克謝,

雖然你應該只有每個進程總線的一個實例,你可以把例如在全球可訪問的地方(如圖所示AsyncPages樣本中),並使用從非-singleton對象,如網頁和WCF服務。

此外,使用一個隊列的所有服務可能並不合適。如果沒有更好地瞭解您的情況,我會爲您確定的每項服務提供一個隊列的默認建議。

希望有所幫助。

+0

每個服務都有自己的隊列。將看看異步頁面示例。理想情況下,我希望與外部客戶進行通信的服務能夠在會話模式下工作。那太好了。 – 2009-12-19 13:27:44

+0

看着異步頁面檢查。挺有趣的。所以,如果我注入總線對象會話服務實例,我怎麼能確定該消息是針對具體實例?例如,我們有2個連接的客戶端。兩人都有自己的會議。然後他們每個發送相同類型的消息。如何確定什麼服務instanse將處理回調? – 2009-12-19 13:43:59

+0

>我如何確定該消息是針對具體實例的? Alexey - 不知道你在問什麼。你問的是一個WCF回調,還是一個NServiceBus回調? – 2009-12-19 18:54:43