[英]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.