【发布时间】:2010-04-26 19:13:56
【问题描述】:
我有两个使用命名管道交换字符串命令的 MFC C++ 桌面应用程序。一切都很好,很可靠。
现在,我必须使用 SilverLight 控件添加用 .NET C# 编写的客户端。我知道如何在 C# 中使用命名管道。但我第一次尝试混合这些失败:无法将客户端连接到正在运行的服务器。
我有什么遗漏并且“混合坚果”模式必须有效吗?还是“语言障碍”?
【问题讨论】:
标签: .net silverlight mfc named-pipes
我有两个使用命名管道交换字符串命令的 MFC C++ 桌面应用程序。一切都很好,很可靠。
现在,我必须使用 SilverLight 控件添加用 .NET C# 编写的客户端。我知道如何在 C# 中使用命名管道。但我第一次尝试混合这些失败:无法将客户端连接到正在运行的服务器。
我有什么遗漏并且“混合坚果”模式必须有效吗?还是“语言障碍”?
【问题讨论】:
标签: .net silverlight mfc named-pipes
假设您尝试使用 WCF 进行通信,据我所知,NetNamedPipeBinding 不适用于 Silverlight,并且如果您尝试执行 P/Invoke,由于安全原因,它将被阻止在浏览器中运行的 Silverlight 应用程序浏览器的限制。
您确实可以跨 Silverlight 插件进行消息传递。 Paul Stubbs 有一个 blog post 展示了它在 Silverlight 3 中的工作原理。
只要您的 Silverlight 应用程序在浏览器中运行并且您必须与 MFC 服务器通信,您就必须实现命名管道之外的其他协议。如果 Silverlight 应用程序在浏览器之外运行,我认为您也不能使用 P/Invoke。这是Silverlight的限制。
【讨论】:
如果你愿意与COM Interop打交道,或许有办法。
它将让您与具有 COM 互操作性的本地应用程序进行通信。然后,您可以使用任何可用的方式将消息从 Silverlight 传送到您想要的应用程序,因为 COM 对象没有与 Silverlight 相同的限制。这需要 Silverlight 4,并且还需要在客户端设置 COM 互操作目标。
【讨论】:
对于查看此旧线程的任何人,一种方法是使用 http 轮询创建双工 wcf 服务 - silverlight 客户端然后可以与 wcf 服务通信,该服务可以将消息传递到 MFC 应用程序。
更多阅读:
http://msdn.microsoft.com/en-us/library/cc645027(v=vs.95).aspx
【讨论】: