簡體   English   中英

從WCF服務異步返回到多個客戶端

[英]Asynchronously return from wcf service to multiple clients

我有一個WCF服務,其中有長期運行的方法,例如獲取和處理某種數據,然后將其返回給客戶端。 我試圖使用類似於以下內容的合同

Task<string> ServiceMethod(string message);

問題是如果我想從服務中將相同的數據返回給多個客戶端,那我該怎么做(如何獲取和存儲有關請求數據的客戶端的信息)。

另外,如果我需要從上述方法中調用后台工作者,那么我該如何處理runworker_completed並將結果返回至上述方法。


附加信息

僅在客戶端請求相同數據的情況下才將相同數據返回給多個客戶端,但是由於獲取和處理該數據需要花費時間,因此只要有可用數據,我都想返回給所有請求該數據的客戶端。

如果我正確理解了您的問題,則希望該服務在完成長時間運行的生成數據的過程后回調客戶端。 由於您必須照顧多個客戶端,因此建議您使用Duplex WCF。 雙工服務合同提供了在調用客戶端時回調方法的功能。 以下代碼項目鏈接是Duplex的一個很好的示例,並且具有更多詳細信息

http://www.codeproject.com/Articles/491844/A-Beginners-Guide-to-Duplex-WCF

請注意,您應該有自己的邏輯來維護回調通道列表

我已使用請求的密鑰將Task的緩存存儲在服務中。 每當完成該密鑰的任務時,我都會將任務發送回所有請求相同密鑰的客戶端。 對於已經具有基於事件的完成功能的現有功能,我也使用TaskCompletionSource並將其存儲在緩存中,然后再次使用它發送異步響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM