2011-01-22 53 views
1

我有一個雙工WCF服務,它依賴於服務和客戶端之間的一致命名管道連接。這是一種發佈/訂閱系統,客戶在該服務上調用Subscribe,並將其放入訂閱列表中。然後,服務會調用其自己的某些更新方法,這會通過回調將更新推送給客戶端。netnamedpipebinding無限receiveTimeout有多可靠?

我已經設置了recieveTimeout爲netnamedpipebinding爲「無限」。我能否合理地依靠這種聯繫永遠開放?更重要的是,有些情況下頻道會在超時之外發生故障嗎?

由於命名管道僅僅是一個共享的存儲位置,我想不出有很多原因,這將始終如一地失敗,除了硬件問題。此外,在一定的時間間隔內,沒有太多的保證ping之外的連接的方式。

在一個側面說明,我的直覺是避免也使客戶端的WCF服務。我知道這不是一個真正的循環依賴,但它只是感到噁心。不過,我對有人告訴我,我只是偏執狂,而且這種模式是好的。

回答

3

你永遠不能依靠連接上。服務中單個未處理的異常/故障將關閉該通道。我認爲你應該在客戶端處理Closed和Faulted事件,或者通過代理娛樂和重新訂購來實現ping機制。

當使用雙工通信,你只需要在客戶端暴露的合同 - 這是不一樣的公開服務,因爲客戶不公開的端點。通信由從客戶端到服務創建的單個通道執行,因爲命名管道是按設計雙工的。每次你想通過一些傳輸進行雙工通信時,你需要在客戶端上有一些處理代碼。

+0

「你不能永遠依賴」?雙重否定意味着什麼? – Gabe 2011-01-22 17:30:57