簡體   English   中英

使用WCF的兩個winform應用程序之間的通信?

[英]Communication between two winform application using WCF?

我有兩個不同的winform應用程序,App1和app2。 App1調用app2的exe(使用DOS命令窗口)並發送消息以啟動app2。 app2開始執行,一旦完成任務,它就會向app1發送回執行成功的消息。 如何使用WCF實現此功能。 早先在foxpro中編寫了相同的代碼,這個finc是使用內存管理實現的。

我認為你想要的是點對點通信,其中2個應用程序(可能在同一台機器上運行也可能不運行)以異步方式發送彼此的消息。 這就是MSN Messenger等聊天程序的工作方式。

有一個關於在MSDN上使用WCF進行點對點通信的“簡單”教程。

請注意,這並不像聽起來那么容易。 您可能更喜歡使用Windows的SendMessage發送消息

這只是概念性的實現方式:

您需要實現WCF服務。 有很多方法可以完成這項任務。 其中一個應該是這樣的。

App1調用服務方法並告訴app2需要執行。 App1可以等待響應。

App2不時ping服務以查看是否需要執行。 App2完成了它的工作並調用服務方法來告訴它已經完成。

App1將在完成后獲得響應。

其他選項不是實現請求/響應,而是從App1 ping服務以查看App2是否完成了它的工作。

有關如何實現WCF服務的信息,請參閱: http//wcftutorial.net/WCF-Getting-Started.aspx

基本上:

一方面實現“服務器”

UIIServiceHost = new ServiceHost(typeof(UIInterop));
UIIServiceHost.Open();

其中UIInterop是一個實現IUIInterop的類,它是一個服務契約

using System.ServiceModel;

[ServiceContract]
public interface IUIInterop {
    [OperationContract]
    void SetControlValue (UIControl c);
}

[DataContract]
public class UIControl {        
    [DataMember]
    public String Name { get; set; }

    [DataMember]
    public String Value { get; set; }
}

生成代理類=> UIInteropClient

另一方面使用代理類實現客戶端

using ( UIInteropClient proxy = new UIInteropClient("nameDependingOfAppConfig") ) {
    proxy.SetControlValue(new UIControl {});
}

=====編輯=====

類和接口的名稱只反映了我缺乏想象力

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM