C#app与unix c ++ app进行通信的最佳方式是什么?

时间:2009-09-12 02:39:09

标签: c# unix interop

我能想到的方式

  1. 网络服务或肥皂
  2. 插槽
  3. 数据库表
  4. 共享文件
  5. 您知道的webservice的任何简明示例?

5 个答案:

答案 0 :(得分:4)

Web服务或SOAP可能相当容易,但是,如果C ++应用程序自然不是Web服务器(或C#应用程序),则直接使用套接字编程可能更容易。

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

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

套接字最容易;我会永远那样做。如果数据库是一个选项,这也是微不足道的,但这确实取决于。如果它是排队的事件,这是有道理的,但如果它的请求/响应,它可能不是那么好。

答案 3 :(得分:1)

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

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

我已经在C中编写了一个与C#客户端通信的服务器,并且endianess可能很难处理,webservices非常简单。

答案 4 :(得分:1)

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