我正在使用WCF
,我在我的C#
計劃中添加了一個聊天室設施。所以,我需要能夠從服務器向客戶端發送信息的兩個事件 -聊天室功能與WCF,雙工回調與輪詢?
- 當用戶連接/斷開我更新連接的用戶列表,併發送回所有客戶端顯示在一個TextBlock
- 當用戶發佈消息,我需要的服務器來發送郵件給所有客戶
所以我要尋找的建議在實施這一點的最好辦法。我打算使用netTcpBinding
作爲客戶端的雙工回調,但後來我遇到了一些問題,關於在連接關閉時無法回撥客戶端。我需要使用percall實例來提高可擴展性。我被告知在這個線程,我不應該離開連接打開,因爲它會'大大限制scalibity' - WCF duplex callbacks, how do I send a message to all clients?
但是,我看了一本書編程WCF服務和作者似乎說,這不是一個問題,因爲'在兩次調用之間,客戶端持有一個代理服務器上的引用,該代理服務器沒有實際的對象。這意味着,你可以配置昂貴的資源的服務實例佔用客戶端關閉代理」
- 因此,這是正確的,是細保持代理客戶端上的長開過嗎?
- 但即使這很好,它會導致另一個問題。如果服務實例在通話之間被破壞,他們如何執行雙工回調來更新客戶端?關於percall實例,編程WCF服務的作者說'因爲一旦方法返回,對象將被丟棄,你不應該分離後臺線程或分派異步調用回實例'
- 我會更好的客戶端投票更新服務?我會想象這比雙工回調的效率低得多,客戶最終可能會使用雙工回調的次數高達50次以上。但也許沒有其他辦法?這是可擴展的嗎?我設想幾百個併發用戶。