我们公司希望将当前的用户界面转换为Web客户端。我们正在考虑使用Microsoft的Silverlight,但它需要与我们的旧C ++服务器应用程序(本机C ++,而不是C ++ / CLI)进行通信。我想知道手工编写这样一个IPC库是否可行,否则是否有现成的IPC协议可用作C ++和Silverlight库。
更新:我强调使用的编程语言,因为它们决定了可以使用哪些库。例如,本机C ++应用程序无法使用为.NET的中间语言编写的库。
答案 0 :(得分:4)
你当然可以这样做 - 现在在我的桌面上,我在一个Visual Studio实例中运行C ++服务器应用程序,在第二个实例中运行Silverlight应用程序,Silverlight应用程序正在与C ++服务器通信插座。但是,有几个重要的警告:
(1)Silverlight只会与一小部分端口(4502-4532)通信,因此您可能需要修改服务器(或插入某种代理)以允许Silverlight与之通信;
(2)服务器必须在端口943上提供socket policy file;和
(3)您无法轻松使用传统的高级访问机制,如RPC或what-not。如果C ++服务器需要特定协议,那么您将不得不自己在Silverlight / C#中编写所有内容。这不一定是火箭科学,但如果你不熟悉套接字编程,那就有一个学习曲线。期望花费大量时间处理byte []数组,Buffer.BlockCopy(),BitConverter.GetBytes()和what-not。
另一种方法是使用WCF服务器包装C ++服务器,然后从Silverlight调用WCF服务器。 WCF通常比套接字慢很多,但在Silverlight中调用也要容易得多。
答案 1 :(得分:3)
您可以使用TCP sockets或WebServices连接到您的应用程序。您可能需要编写一个网关应用程序(将基于套接字的客户端与C ++服务器应用程序连接起来)。
答案 2 :(得分:3)
您至少有3种方法: