繁体   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