【问题标题】:What is the best way for C# app to communicate unix c++ appC# 应用程序与 unix c++ 应用程序通信的最佳方式是什么
【发布时间】:2009-09-12 02:39:09
【问题描述】:

我能想到的方法

  1. Web 服务或肥皂
  2. 套接字
  3. 数据库表
  4. 共享文件

您知道任何关于 web 服务的简洁示例吗?

【问题讨论】:

  • 在迷恋ORM的今天,我觉得Database作为一种集成机制经常被忽视。

标签: c# unix interop


【解决方案1】:

Web 服务或soap 会相当容易,但是,如果C++ 应用程序不是天生的Web 服务器(或C# 应用程序),直接使用套接字编程可能更容易。

套接字在 C# 和 C++ 中都相当容易使用。它们使您可以完全控制传输的日期类型,但可能会增加处理工作量。

如果您直接使用套接字,需要注意的最大问题可能是二进制数据的字节顺序和文本数据的编码。否则,这很容易。

【讨论】:

    【解决方案2】:

    由于您已经了解 Web 服务和套接字方法,我将提及其他一些选项。如果您喜欢简单,请查看XML-RPC。这就是 SOAP 在大型标准委员会和公司利益开始控制规范之前的样子。您可以找到几乎所有主要编程语言的 XML-RPC 实现。 Hessian 是一个有趣的二进制协议,它有很多粉丝,并且支持几乎所有主要语言。 Protocol Buffers 在 Google 中很受欢迎。 Google 的官方版本不支持 C#。但是,SO 的两个最高代表用户确实为 .Net 空间提供了 protobuf 端口。

    我可能会因此而被嘲笑,但也可以看看 CORBA。这些天它并不流行,但有许多重要的技术信誉,特别是如果通信的一端是 C++。恕我直言,它是具有 OO 支持且不需要尖括号的 WS-*。对于互操作,我认为它仍然应该在桌面上占有一席之地。在从事 C++ 开发时,我发现OmniOrb 非常有效和高效。看看这个SO Question,了解有关在 .Net 中使用 CORBA 的一些指示。

    【讨论】:

      【解决方案3】:

      套接字是最简单的;我总是会先去做。如果数据库是一个选项,那也是微不足道的,但这真的取决于。如果是排队事件,那是有道理的,但如果是请求/响应,那可能就没那么好了。

      【讨论】:

        【解决方案4】:

        您可以使用gsoap 让 C/C++ 程序使用 Web 服务。

        您还可以调用用 C++ 编写的 cgi 程序。

        我用 C 语言编写了一个与 C# 客户端通信的服务器,但处理字节序可能很麻烦,Web 服务要简单得多。

        【讨论】:

          【解决方案5】:

          您希望它相互通信(例如,通过 tcp(就像许多其他人指出的那样))还是希望能够将对象从 C# 转换为 C++?如果是这样,请查看 Apache Thrift (http://incubator.apache.org/thrift/)。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-02-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多