2010-10-27 73 views
3

我正在研究一個應用程序,其中有一個映像檢查進程和一個UI進程。兩者都使用C#4.0進行編程。他們可能也可能不在同一臺機器上。我必須設計它來處理這兩種方法。檢查過程將基本上在Windows 7/64盒子上作爲此應用程序中的服務器運行。什麼.net框架用於在兩個進程之間進行通信

就通信而言,從Ui到檢測過程的消息將是最小的。主要是啓動/停止/更新配置類型消息。當檢查過程正在檢查時,它可以連續傳輸高達10mb /秒的圖像進行監視。

SO 468375中,如果兩個進程位於同一臺機器上,則建議使用命名管道。聽起來是一個很好的解決方案。

但是,我真正的問題是 - 如果這兩個進程位於不同的計算機上,那麼這兩個進程之間進行通信的最佳實踐是什麼? WCF服務,套接字,遠程處理,命名管道等?

回答

10

遠程處理已棄用。 WCF封裝了Remoting,Web服務和其他舊的通信技術。

編輯 - 添加這下一個段落

WCF被引入作爲一種方法,使使用這些底層技術更一致。對Web服務進行編碼與對Remoting服務進行編碼基本相同,等等。這不是一個確切的比較,但它也符合LINQ的用戶需求。隨着LINQ你使用類似的語法是否訪問SQL數據,對象,XML等

末編輯

我會說使用WCF服務,爲你描述。這是他們的目標。

+1

我同意。如果它在機器上,通過WCF命名管道是一個很好的選擇... – 2010-10-27 20:24:31

+0

聽起來像WCF是要走的路。澄清一點 - 我可以運行WCF服務作爲我的檢查app.exe的一部分,還是必須將其作爲Windows服務安裝? – 2010-10-27 20:33:39

+0

它不需要成爲Windows服務的一部分。該服務可以在winforms,consle應用程序或IIS中進行bohosted。 – David 2010-10-27 20:35:04

3

更多信息請參閱David的回答。

請注意,WCF可以使用不同的基礎綁定。本地計算機上的命名管道應該是最快的(它使用.Net 4.0中的內存映射文件)。 TCP到遠程機器可能是最簡單和高性能的。

有一個運輸here選擇的討論。

1

如果您有資源,我會建議MSMQ。我們廣泛使用它們,它們重量輕,速度快,並且非常易於在.net中編程。

+0

不錯。我忘了那件事。但是再次。 WCF也封裝了這個。您可以使用WCF並選擇MSMQ綁定。 – David 2010-10-27 21:17:12

0

您也可以考慮使用Eneter Messaging Framework。
它重量輕,易於使用。對於進程間通信,它支持NamedPipes,Tcp和Http(當然,您的應用程序邏輯不受此影響)。
如果你有興趣,你可以在這裏找到更多的技術信息:http://www.eneter.net/OnlineHelp/EneterMessagingFramework/Index.html
和實例如何在這裏使用它:http://eneter.blogspot.com/

+0

有趣的產品。必須記住它,但它不適合我們的項目。 – 2010-11-06 19:47:05

相關問題