Silverlight客户端可以与C ++服务器通信吗?

时间:2009-12-11 10:20:45

标签: c++ silverlight ipc communication

我们公司希望将当前的用户界面转换为Web客户端。我们正在考虑使用Microsoft的Silverlight,但它需要与我们的旧C ++服务器应用程序(本机C ++,而不是C ++ / CLI)进行通信。我想知道手工编写这样一个IPC库是否可行,否则是否有现成的IPC协议可用作C ++和Silverlight库。

更新:我强调使用的编程语言,因为它们决定了可以使用哪些库。例如,本机C ++应用程序无法使用为.NET的中间语言编写的库。

3 个答案:

答案 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种方法:

  1. 直接套接字通信 - 许多C ++库(Winsock,wxWidgets)
  2. Web服务 - 与Java / C#相比,在C ++中并不是那么漂亮,但有像gSoap这样的工具
  3. 只需使用普通的旧HTTP请求即可。从Silverlight获取GET / POST(简单),并发回一些您在C ++中手动构建的XML或JSON数据(或XAML)(或者也可以使用C ++库)