我有一個工作的雙工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客戶端掛起服務中斷
- 6. 如何從服務器中的客戶池中識別客戶端 - 設計
- 7. 訪問wcf服務上的客戶端標識
- 8. WCF通過證書標識客戶端的服務
- 9. Opa:它如何識別服務器端或客戶端腳本
- 10. .Net WCF服務的Java客戶端
- 11. 用於Java客戶端的WCF服務
- 12. WCF服務器/客戶端回調,從客戶端到服務器的回覆
- 13. WCF客戶端使用的WCF服務以及WCF客戶端使用的Java服務
- 14. 在WCF Web服務內部處理WCF Windows服務客戶端
- 15. 客戶端WCF服務 - SSL證書
- 16. WCF - 向客戶端驗證服務
- 17. 從WCF客戶端調用ServiceStack服務
- 18. 重複使用WCF服務客戶端
- 19. 3層客戶端WCF服務
- 20. WCF REST服務和客戶端通知
- 21. 爲Android客戶端創建wcf服務
- 22. WCF客戶端調用Java Web服務
- 23. WCF服務託管在客戶端
- 24. 由WPF客戶端使用WCF服務
- 25. 異步客戶端服務器WCF
- 26. WCF服務客戶端生命週期
- 27. WCF服務+客戶端(TLS1.2發行)
- 28. WCF客戶端探測服務
- 29. WCF服務 - 客戶端Uml類圖
- 30. WCF服務客戶端問題