2011-05-19 117 views
4

我想弄清楚哪個客戶端/服務器技術(即.NET Framework的哪一部分)用於我們的新應用程序。我們將使用.NET 3.5 SP1在C#中編寫應用程序。雙向溝通服務器/客戶端架構?

它將包含一個將作爲「服務器」運行的中央服務器,並且多個客戶端應用程序分佈在多臺機器上。客戶端應用程序是一個trayapp應用程序,它將接收來自服務器的通知,並且還將一些信息發送回服務器。因此溝通將是雙向的,而且需要快速。服務器將需要知道將通知發送到哪個客戶端。

我一直在想我可以使用套接字。我也遇到了TcpListener和TcpClient類。另一種選擇是使用WCF做些事情,但我不確定如何與它進行快速雙向通信。

+1

看看這裏http://realfiction.net/go/113 – 2013-03-11 19:11:02

回答

3

不知道您計劃交換多少數據,很難做出明確的建議。我使用WCF和TCP套接字在我的UI和我的Windows服務之間交換數據。這是我所做的考慮。

我使用WCF來表示我稱之爲非週期性數據交換。例如,當我的Windows服務中發生事件時,我使用WCF將事件傳遞給UI。特別是對於這種基於事件的機制,我會強烈推薦Juval Lowy的Publish-Subscribe Framework,這是免費提供here。我還使用WCF將配置更改從UI傳遞到Windows服務。 WCF是爲我進行這種數據交換的完美解決方案。

當用戶告訴我的Windows服務執行某些操作時,會有很多數據從Windows服務發送到UI。爲此,我使用TCP套接字。我知道WCF具有流媒體功能,我強烈地考慮使用它。在我必須做出決定之前,我只是沒有時間去適應它,所以我按照我所知道的去做。

雖然我希望我全面使用WCF來實現對稱性,即非週期性和流式數據,但這種混合方法對我很好。

希望這會有所幫助。

+0

針對pub/sub框架的+1 – jgauffin 2011-05-20 06:13:32

4

帶有NetTcp綁定的WCF。

你應該寫一個雙工服務。

+2

你可以進入更多的細節,優點/缺點。 WCF和NetTcp帶來的高級別概述或爲什麼應該使用雙工服務等。 – Raynos 2011-05-19 21:09:38

+0

@射線:這不是真的必要。 WCF應該用於所有這些工作,除非有真正的理由不這樣做; netTCPBinding是.NET到.NET WCF通信的明顯選擇;而雙工服務是與WCF進行雙向通信的唯一方式。 – 2011-05-20 02:21:37

1

如果我是你,我會避免套接字,因爲有很多事情需要了解它們。看看SO的所有socket questions。如果你不知道如何正確使用它,那將是一場噩夢。

WCF將爲您處理所有較低級別的問題。