我有一個工作的雙工WCF服務與WSDualHttpBinding
。我的問題是想出一個方法來存儲具有唯一ID的回調通道。該服務旨在長期運行。當調用「訂閱」方法時,我可以簡單地獲取OperationContext.Current.GetCallbackChannel()
返回值並將其存儲在列表或字典中嗎?它保證有效,直到連接活着?識別WCF服務中的客戶端
6
A
回答
5
最簡單的方法是讓客戶端在服務的Subscribe方法中提交一個鍵值。然後,您可以將回撥通道保存在字典中。這個字典可能需要是一個靜態變量或者單例類,它們的生命週期大於服務類的生命週期,因爲大多數服務類都有一個PerCall生命週期,並在服務調用完成後得到處理。謹防線程問題!
回調通道可能在客戶端或服務端隨時發生故障。該服務必須處理故障頻道的可能性並從字典中刪除故障頻道。 WSDuallHttpBinding是一個「無狀態」綁定,因此客戶端的任何錯誤都不會在服務端檢測到,直到服務端嘗試調用它們。如果客戶端進入故障狀態,NetTcpBinding將引發ChannelFaulted事件。出於這個原因,如果它符合你的要求,我會推薦NetTcpBinding。
public bool Subscribe(string id) {
ICallback callback = OperationContext.Current.GetCallbackChannel();
if (!_activeCallbackChannels.Contains(id)) {
_activeCallbackChannels.Add(id, callback);
return true;
}
else {
return false;
}
}
相關問題
- 1. 識別WCF客戶端ID
- 2. 識別wcf中的客戶端
- 3. WCF服務客戶端
- 4. 將WCF服務公開給asmx客戶端和WCF客戶端
- 5. WCF的服務器/客戶端conected客戶服務器
- 6. WCF客戶端掛起服務中斷
- 7. 如何從服務器中的客戶池中識別客戶端 - 設計
- 8. 訪問wcf服務上的客戶端標識
- 9. WCF通過證書標識客戶端的服務
- 10. C# - 客戶端的WCF REST服務JSON
- 11. 用於Java客戶端的WCF服務
- 12. .Net WCF服務的Java客戶端
- 13. gSOAP客戶端的WCF服務
- 14. Opa:它如何識別服務器端或客戶端腳本
- 15. WCF服務器/客戶端回調,從客戶端到服務器的回覆
- 16. WCF客戶端使用的WCF服務以及WCF客戶端使用的Java服務
- 17. 在WCF Web服務內部處理WCF Windows服務客戶端
- 18. WCF客戶端從ASMX web服務
- 19. Java客戶端訪問.net WCF服務
- 20. 客戶端異步調用WCF服務
- 21. 爲Android客戶端創建wcf服務
- 22. WCF回調服務到php客戶端
- 23. 3層客戶端WCF服務
- 24. WCF服務客戶端生命週期
- 25. WCF服務wsdl客戶端錯誤
- 26. WCF服務未假冒客戶端
- 27. WCF服務客戶端問題
- 28. WCF服務+客戶端(TLS1.2發行)
- 29. WCF - 向客戶端驗證服務
- 30. 重複使用WCF服務客戶端