2009-06-08 52 views
0

我有一個系統,我需要客戶端和服務器之間的雙向通信。在某些情況下,客戶端需要發起與服務器的通信以提出問題,查詢狀態,獲取一些數據等。{我們有一個AI系統,用於執行重複性任務,監控,報告生成,警報等,以及客戶端應用程序允許我們與服務器進行交互。}在其他情況下,服務器需要向客戶端報告狀態變化或警報。我們使用.NET來實現系統,並考察了一些不同的架構:雙向客戶端服務器架構/實現

A)打開一個TCP通道和低級別管理通信。這似乎滿足我們的需求,但主要是因爲我們的團隊缺乏低級別通信協議的豐富經驗,所以一直相當不穩定。

B)使用.NET遠程處理,其中兩個系統都充當主機 - 客戶端將服務器註冊爲遠程主機,並且一旦建立連接,服務器就會繼續並將客戶端作爲遠程主機註冊渠道。這對於基本的消息傳遞來說似乎沒有問題,但是有些情況下我們需要在客戶端和服務器之間保持「對話」。在這種體系結構下多客戶似乎有點具有挑戰性。

C)忘了雙向通信,並使用輪詢架構來輪詢新郵件的服務器 - 工作好而造成的過度健談系統,使客戶端和服務器之間的具有挑戰性的「對話」。

上最好的辦法思緒之中的任何?建議採用不同的方法?

回答

1

在WCF中看看Duplex Services - 這可能會得到你所需要的,而不必擔心低級別的管道的一種方式。

0

WCF似乎是不錯的選擇。在CodeProject上有一個相當不錯的教程,它描述瞭如何實現客戶端/服務器聊天應用程序。

還有一系列網絡廣播herebook由同一作者

1

我有不錯的經歷 - 與XMPP(電平「概念證明」並沒有在生產中部署它尚未)作爲這種雙向通信的協議;雖然大多數都是以交互式聊天應用程序的角度來考慮的,但它實際上是一個通用協議,它確實有.NET實現。微軟的替代品可能是MSMQ。

0

怎麼樣在使用WCF雙工服務,如果客戶端IOS設備或Android設備?這些客戶是否會支持回調?