2010-04-26 76 views
0

我有兩個MFC C++桌面應用程序使用命名管道交換字符串命令。一切都很好,可靠。進程間通信:MFC服務器,.NET C#客戶端

現在,我必須添加使用SilverLight控件編寫.NET C#的客戶端。我知道如何在C#中做命名管道。但我第一次嘗試混合失敗:無法將客戶端連接到正在運行的服務器。

我有什麼遺漏,「混合堅果」模式必須工作?或者它是「語言障礙」?

回答

0

假設您嘗試使用WCF進行通信,但據我所知,NetNamedPipeBinding不適用於Silverlight,並且如果您嘗試執行P/Invoke,由於安全約束,將會阻止Silverlight應用程序在瀏覽器內運行的瀏覽器。

您確實有跨Silverlight插件可用的消息。 Paul Stubbs有一個blog post顯示如何在Silverlight 3中工作。

只要您的Silverlight應用程序在瀏覽器中運行,並且必須與MFC服務器通信,則必須實現除命名管道之外的其他一些協議。如果Silverlight應用程序運行在瀏覽器外,我認爲不允許您使用P/Invoke。這是Silverlight的限制。

+0

你覺得插座什麼? – val 2010-04-28 11:55:20

+0

在mfc服務器和客戶端之間創建一個服務器代理服務器,該服務器代理服務器與mfc服務器使用客戶端和命名管道進行wcf綁定? – 2010-04-29 11:22:58

0

如果你願意處理COM Interop可能有辦法。

它會讓你與具有COM Interop的本地應用程序進行通信。然後,您可以使用任何可用的方法將消息從Silverlight傳遞到所需的應用程序,因爲COM對象的限制與Silverlight的限制不同。這需要Silverlight 4,並在客戶端設置該COM Interop目標。

+0

但請注意,silverlight應用必須以提升的權限運行才能正常工作。 (out of browser) – 2010-04-27 20:33:26

+0

Com Interop聽起來很有趣。但我目前正在使用Silverligth 3,並且我正處於項目的中間......呃,需要重新組合,我認爲:-) 您是否看到套接字是更好的選擇? MFC - > Silverlight – val 2010-04-28 11:58:15

+0

Ouch。在這種情況下,我能想到的最好的方法是使用託管Silverlight的服務器作爲中介(IE讓MFC通過http post向服務器發送消息,然後讓Silverlight應用程序每隔一段時間輪詢一次服務器),或者設置localhost以某種方式作爲服務器。 但是,與MFC應用程序之間的相比,我提出的任何想法都不是微不足道的。但是,使用服務器託管Silverlight作爲中介將是我研究的下一個想法。 – Rangoric 2010-04-28 14:53:42