2013-01-23 119 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 {}); 
} 

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

的類和接口名稱只表示我缺乏想象力的

相關問題