2010-01-17 90 views
15

我有兩個C#程序,我想在它們之間來回發送一些數據。 (並檢查數據是否到達其他應用程序。) 這兩個程序將始終運行在同一臺計算機上,因此不需要網絡功能。我已經閱讀過一些類似主題的問題,但我不完全確定哪種方法適合我。 (WCF,Remoting等)C#應用程序之間的通信 - 簡單的方法

我想知道的是,在C#中初學者更容易實現哪一個? (我不希望它變得太複雜,只是我想發送的一些整數和一些文本。)

如果在難度上沒有真正的區別,那麼它有什麼優勢另一個?

我真的很感謝一些簡單的示例代碼。

在此先感謝。

+2

沒有什麼可以添加到WCF的建議,但遠離Remoting。對於其他應用程序的對象進行親密操作,遠遠優於對WCF的消息傳遞。 – itowlson 2010-01-17 20:39:37

回答

11

WCF本質上將應用程序(web服務,遠程處理,MSMQ等)之間的各種通信方法打包在一個包中,以便它們在編程方式上與使用方式相同,並詳細說明了哪些方法用於留給配置之間的綁定。也許略有簡化,但基本上是關於它的。

如果您需要進程間通信,那麼進入WCF是值得的,這當然是我的建議。值得一看的是IDesign,他們編寫了大量關於這個主題的文章,以及一些可重用的代碼庫,您可能會感興趣。他們的Juval Lowy也寫了關於這個問題的excellent book

+0

感謝您的快速總結和鏈接,它確實幫助我們很好地瞭解了WCF。 – 2010-01-20 22:43:54

13

您可以使用Pipes在應用程序的不同實例之間發送數據。如果您只需告訴另一個實例發生了什麼情況,則可以使用SendMessage API將消息從一個應用程序發送到另一個應用程序。

+3

最好的建議,簡單可靠。忘記WCF吧,它的設計過於可笑。 – dpurrington 2010-01-17 21:56:55

+0

請注意,[msdn](https://msdn.microsoft.com/en-us/library/system.io.pipes.anonymouspipeserverstream(v = vs.110).aspx)表示匿名管道被定義爲one-辦法。 – 2015-06-20 13:56:52

+0

我希望我可以upvote兩次。 WCF就是這樣一頭豬,如果那些是我唯一的選擇,我寧願使用文件下載進行應用程序通信。 – 2016-06-02 01:57:51

5

關於WCF的另一個好處是,如果您的需求發生變化,並且突然之間您必須將應用程序之一移動到另一臺機器上,現在需要網絡功能,您只需要更改雙方的配置,而不必重新編碼。

此外,廣告大衛說,WCF是一個很好的工具,在你的包裏。

乾杯,瓦格納。

2

我發現MSMQ很容易實現。