2010-04-14 70 views
0

我們開發了一個多線程服務器,它接收來自多個客戶端的數據並調用不同的WCF服務。 有很多情況下,兩個(或更多)不同的客戶端同時調用服務器,並且服務器嘗試同時從兩個不同的線程調用遠程WCF。 我們遇到了一些問題,尤其是當遠程WCF服務關閉時。 我們正在做的事情是否正確?這種情況下是否有最佳做法?WCF多線程調用

+0

你能否更詳細地解釋你的問題?這似乎不是一種不尋常或不合理的模式。 – Steve 2010-04-14 15:32:38

回答

0

您需要針對您遇到的問題類型更具體一些,但您可能需要了解冪等性和有狀態服務。

2

大多數情況下,最好的做法是這樣的:

  • 您的客戶端調用WCF服務,「每叫」格局
  • 從客戶端的每個請求獲得了它自己的,原始服務器類實例處理請求並在完成後處理
  • 服務器類因此是單線程的,不可重入的,並且不必處理任何多任務問題
  • 服務器類是無狀態的並且不保持到任何服務器資源或任何東西
  • 任何「狀態」或需要在呼叫之間保持的數據都存儲在適當的位置,例如,一個數據庫

這是迄今爲止最簡單的設置,應該是您的案例至少80%的最佳選擇。

查看這篇優秀的MSDN Magazine文章Discover Mighty Instance Management Techniques For Developing WCF Apps作者Juwal Lovy瞭解更多關於各種選項的背景信息。

+1

比我能說得簡潔得多。我會補充說這個場景的服務屬性是'InsanceContextMode.PerCall'。如果您使用的是單身或重入式服務,則可能會遇到各種問題。 – roufamatic 2010-04-14 15:46:55