【问题标题】:Can a Silverlight client talk to a C++ server?Silverlight 客户端可以与 C++ 服务器通信吗?
【发布时间】:2009-12-11 10:20:45
【问题描述】:

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

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

【问题讨论】:

  • 服务器编写的语言与它有什么关系?
  • @Neil:因为编程语言规定了可用的库。
  • 如果 Silverlight 支持 IPC 机制,我不明白为什么不。

标签: c++ silverlight ipc communication


【解决方案1】:

您当然可以这样做——现在在我的桌面上,我在 Visual Studio 的一个实例中运行 C++ 服务器应用程序,在第二个实例中运行 Silverlight 应用程序,并且 Silverlight 应用程序正在与 C++ 服务器通信插座。但是,有几个重要的警告:

(1) Silverlight 只会与一小部分端口 (4502-4532) 通信,因此您可能需要修改服务器(或插入某种代理)以允许 Silverlight 与其通信;

(2) 服务器必须在端口 943 上提供socket policy file;和

(3) 您不能轻易使用传统的高级访问机制,如 RPC 或其他。如果 C++ 服务器需要特定的协议,您将不得不自己在 Silverlight/C# 中编写所有内容。这不一定是火箭科学,但如果您不熟悉套接字编程,则有一个学习曲线。预计会花费大量时间处理 byte[] 数组、Buffer.BlockCopy()、BitConverter.GetBytes() 等等。

另一种方法是使用 WCF 服务器包装 C++ 服务器,然后从 Silverlight 调用 WCF 服务器。 WCF 通常比套接字慢很多,但在 Silverlight 中调用也容易得多。

【讨论】:

    【解决方案2】:

    您可以使用TCP sockets 或WebServices 连接到您的应用程序。不过,您可能需要为此编写一个网关应用程序(将基于套接字的客户端与您的 C++ 服务器应用程序连接起来的应用程序)。

    【讨论】:

      【解决方案3】:

      您至少有 3 种方法可以做到这一点:

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

      【讨论】:

        猜你喜欢
        • 2019-03-07
        • 2014-08-28
        • 1970-01-01
        • 2011-09-11
        • 2011-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多