2010-04-26 105 views
0

我有很多客戶端程序和一個服務。 此客戶端程序使用帶WCF的http通道與服務器進行通信。wcf和雙工通信

客戶端擁有動態IP。 他們每天24小時在線。

我需要以下內容: 服務器應在3分鐘內通知所有客戶端。如果客戶是新的(現在開始),應該立即通知它。

但是因爲客戶端有動態IP,他們每天工作24小時,有時連接不穩定,使用wcf雙工是不是個好主意?

當連接斷開時會發生什麼?它會自動恢復?

將遠程MSMQ用於此類通知是個好主意嗎?

問候,

回答

0

當連接斷開時,回調將引發異常並關閉通道。

我不確定MSMQ會爲您工作,除非每個客戶端都會爲您創建一個MSMQ隊列,並將消息推送給他們中的每一個。再次與不可靠的連接,這將無濟於事。如果你失去與客戶端的連接,客戶端脫機或更改IP而不通知系統,我認爲你不能「推送」數據。

1

WCF雙工非常耗資源,每個拇指規則,你不應該使用超過10個。有很多的開銷涉及雙向通道。也沒有自動恢復。

如果您知道3分鐘的時間間隔,並且您希望客戶端在啓動時獲取信息,爲什麼不讓客戶端從服務器輪詢信息?

+0

在這一刻,客戶端將信息從服務器中進行彙集。但我正在尋找更好的解決方案。有時客戶端詢問時服務器中的信息還沒有準備好,因此客戶端需要執行多個請求,並且由於大量的客戶端可能會在服務器上產生不必要的過載。這就是我尋求推動技術的原因。當服務器準備就緒時,它會將信息推送給所有客戶端。我發現MSMQ可以將信息推送到遠程客戶端。我不確定自動恢復和安全性,當然還有關於過載和可能出現的問題。 – darpet 2010-04-27 09:05:02

+0

爲了使用回調將數據推送到客戶端,必須至少在服務器上註冊一次,因爲您不知道客戶端IP。當客戶端IP更改或客戶端啓動時,您還可以將每個客戶端IP存儲在服務器的列表中。然後,您可以使用此列表與客戶端聯繫,而無需使用回叫。但是這需要從服務器到客戶端的直接連接或在客戶端位於防火牆後面的情況下進行端口轉發。 – flayn 2010-04-27 09:55:06