2013-01-23 73 views
3

我有两个不同的winform应用程序,App1和App2。 App1调用app2的exe(使用DOS命令窗口)并发送消息以启动app2。 app2开始执行,一旦它完成任务,它将消息发回给app1,执行成功。我怎样才能使用WCF实现这一功能。早些时候相同的代码是用foxpro编写的,而且这个finc是通过内存管理实现的。使用WCF的两个winform应用程序之间的通信?

+0

WOW你不只是说' FoxPro'这是一种古老的语言..你是说,WinForm应用程序是一个FoxPro的Windows应用程序..?你打算如何使用WCF来做什么,你会把它变成一个服务应用程序。 – MethodMan

+0

是的,该应用程序是在Foxpro中构建的,但现在我们正在将代码从Foxpro迁移到C#.net 4.0。 –

+2

好吧,我只是确保..我以为我有一个噩梦形式我旧的快船/ FoxPro编码的日子..大声笑 – MethodMan

回答

0

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

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

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

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

App1在完成时会得到响应。

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

对于如何实现WCF服务看,例如:http://wcftutorial.net/WCF-Getting-Started.aspx

+0

非常感谢。应用程序1应该是服务器,因为有很多像app2这样的应用程序,并且所有应该按顺序执行,一旦app2被执行,然后从应用程序1调用app3执行,并且soo。所有的应用程序都在同一个系统上。请提出实现此目标的最佳方法。 –

1

我想你想要的是对等网络通信,其中2个应用程序(这可能会或可能不会在同一台机器上运行)发送互不相同的消息。聊天程序如MSN Messenger的工作方式。

有一个关于peer-to-peer communication using WCF at MSDN的“简单”教程。

请注意,这并不像听起来那么容易。您可能更喜欢just send messages using Windows' SendMessage

+0

非常感谢。应用程序1应该是服务器,因为有很多像app2这样的应用程序,并且所有应该按顺序执行,一旦app2被执行,然后从应用程序1调用app3执行,并且soo。所有的应用程序都在同一个系统上。请提出实现此目标的最佳方法。 –

+0

有很多方法可以做到这一点,最好的方法取决于如此多的变量,以至于无法回答您的问题。寻求贵公司的建筑师或高级开发人员的帮助。 –

0

基本上:

在一侧上实例化 “服务器”

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

其中UIInterop是一个类implementaing 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; } 
} 

Generate代理类=> UIInteropClient

另一侧实现一个客户端使用代理类

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

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

的类和接口名称只表示我缺乏想象力的

相关问题