2010-12-11 26 views
1

我提出的場景基本上是兩個.NET可執行文件之間的交互。在.NET Windows窗體中,如何在兩個EXE或應用程序之間發送數據?

我在C#(Application-A)中製作了.NET Windows窗體應用程序,該應用程序在用戶的機器上運行並執行一些特定的活動,因此它收集了一些數據。 現在我有另一個.NET Windows窗體可執行文件(Application-B),也是用C#編寫的,它也基於某些特定的輸入或提供的數據執行某些特定的活動。

現在我想要做的是,從Application-A調用Application-B並將一些數據傳遞給它。

我該如何做到這一點?

回答

4

您可以使用多個選項。下面的每個選項都有一些資源。

  • .NET遠程
  • WCF
  • 使用的通信文件
  • MSMQ

最後兩個選項只有在過程是在同一臺機器有效。

由於它們是兩個分開的過程,我認爲最簡單的方法是使用.NET RemotingHere你可以找到關於如何做的文檔和例子。

Remoting的替代方法是WCF(> = .NET 3.0)。它比遠程處理執行better

如果進程將始終在同一臺機器,如果你不想通過一個文件(簡單的解決方案通常做工精細!

等更要使用本地主機上,你可以將它們傳達給遠程複雜的解決方案使用Message Queue(MSMQ)進行通信。 Here你可以找到一個關於如何使用它的例子。

+0

命名管道:http://msdn.microsoft.com/en-us/library/bb546085.aspx http://wyday.com/blog/2010/multi-process-c-sharp-application-like-google使用命名-管道 - 鉻 - / – Kiquenet 2013-02-27 13:49:17

0

您可以使用MSMQ在應用程序之間進行通信。

但是,任何機制都可以。

您可以使用基於文件的通信(寫入已知目錄並從中讀取)。

WCF是另一種解決方案。

0

如果兩個應用程序是相同的用戶的計算機上運行比

1-這可以通過進程間通信信道(信道IPC)

2-如果使用來實現。 NET 4。0,你可以如果這兩個應用程序在不同系統上運行

1 - 您可以使用.NET遠程的使用內存映射文件

2 - 你可以有WCF服務基於通信

3- Web服務也是一種選擇,如果使用.NET 2.0或更低版本

0

WCF會允許你未來有很大的靈活性:如果您決定加強這種溝通以支持多種溝通模式,app.config的變化應該是支持不同綁定的大部分工作。

在我參與的一些項目中,有一些通訊技術混合使用,其中一種選擇會更容易維護 - 這使我接受了WCF的固有靈活性決定(WCF也如果需要進行排隊通信,則支持MSMQ)。

如果您關心學習曲線,並確信您將來不需要擁抱其他通信拓撲,那麼遠程處理可能是一個有用的解決方案。遠程處理可能是建立IPC最簡單,最不需要開發人員工作的方式。

你應該遠離Web服務 - Web服務操作中存在不必要的開銷,WCF不會遭受(WCF仍然可以允許二進制傳輸)。

相關問題