我有一個使用WCF服務(NetTcpBinding
)實現的客戶端/服務器設置。設置是這樣的,客戶端基本上向服務器發送一些命令和指令(主要是單向呼叫)。但是,服務器可能處於需要非常迅速地將大量數據發送回客戶端的情況。我已經實現了目前在主WCF服務上使用回調(服務器非常頻繁地進行回調)。下面使用兩個WCF服務而不是一個回調?
但我有一段時間讓它正常工作。它大多數似乎歸結爲客戶端在服務器正在向客戶端發送大量數據的過程中調用服務器時發生的異常/掛起(大部分掛起)。我已經嘗試了幾乎所有的事情,比如將我的大部分電話設置爲[OperationContract(IsOneWay=true)]
,並將ConcurrencyMode=ConcurrencyMode.Multiple
設置爲ServiceBehavior
。這減少了掛起的次數,但沒有阻止它們。
所以,因爲對我來說,迅速得到一個可行的解決方案是最重要的(最後期限將至),我考慮重構有兩個WCF服務。第一個就像所有客戶端服務器現在使用這些命令一樣。第二個方向相反,並且在客戶端連接到服務器之後進行設置。該服務將用於將數據發送回客戶端。
這種方法有什麼缺點嗎? WCF服務在兩個方向都有問題嗎?任何其他提示或技巧?或者我完全不在這個基地?
是否有可能將您的響應分解爲多個頁面,然後客戶端將使後續請求檢索?我不知道通過一次服務呼叫發送大量數據是一個好主意。 – Kekoa
@Kekoa - 不是真的......這不符合要求。該服務的重點是以近似實時的方式監控數據饋送。我可以在某種程度上「分塊」數據......或者我想我可以讓客戶端以某個間隔(「GetLastData」類型的呼叫)請求數據。人力資源管理... – Tim