4

我有两个不同的 winform 应用程序,App1 和 app2。App1调用app2的exe(使用DOS命令窗口)并发送消息启动app2。app2 开始执行,一旦完成任务,它就会向 app1 发回执行成功的消息。如何使用 WCF 实现此功能。早些时候,同样的代码是用 foxpro 编写的,这个 finc 是使用内存管理实现的。

4

3 回答 3

1

我认为您想要的是点对点通信,其中 2 个应用程序(可能在或可能不在同一台机器上运行)异步发送彼此消息。这就是 MSN Messenger 等聊天程序的工作方式。

在 MSDN 上有一个关于使用 WCF 进行点对点通信的“简单”教程。

请注意,这并不像听起来那么容易。您可能更喜欢只使用 Windows 的SendMessage.

于 2013-01-23T09:51:01.303 回答
0

基本上:

一方面实例化一个“服务器”

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 {});
}

===== 编辑 =====

类和接口的名称只反映我缺乏想象力

于 2013-01-23T09:52:20.920 回答
0

这只是概念上如何实现这一点:

您需要实现 WCF 服务。有很多方法可以完成这项任务。其中之一应该是这样的。

App1 调用 service 方法并告诉 app2 需要执行。App1 可以等待响应。

App2 时不时 ping 服务,看是否需要执行。App2 完成了它的工作并调用服务方法来告诉它已经完成了。

App1 将在完成后得到响应。

其他选项不是实现请求/响应,而是从 App1 ping 服务以查看 App2 是否完成了它的工作。

如何实现 WCF 服务参见,例如:http ://wcftutorial.net/WCF-Getting-Started.aspx

于 2013-01-23T09:36:51.120 回答