簡體   English   中英

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

[英]What is the best way for C# app to communicate unix c++ app

我能想到的方式

  1. 網絡服務或肥皂
  2. 插座
  3. 數據庫表
  4. 共享文件

你知道webservice的任何簡潔例子嗎?

Web服務或SOAP可能相當容易,但是,如果C ++應用程序自然不是Web服務器(或C#應用程序),則直接使用套接字編程可能更容易。

套接字在C#和C ++中都很容易使用。 它們使您可以完全控制傳輸日期的類型,但代價是可能需要更多的處理工作。

如果直接使用套接字,最值得注意的問題可能是二進制數據的字節順序和文本數據的編碼。 否則,這很容易。

由於您已經了解Web服務和套接字方法,因此我將提及其他一些選項。 如果您喜歡簡單,請查看XML-RPC 這就是SOAP在大型標准委員會和公司利益開始控制規范之前的情況。 您可以在幾乎所有主要編程語言中找到XML-RPC的實現。 Hessian是一個有趣的二進制協議,擁有許多粉絲,並且幾乎支持所有主要語言。 協議緩沖區在Google中很受歡迎。 Google的官方版本不支持C#。 但是,SO的兩個最高代表用戶確實為.Net空間提供了protobuf端口。

我可能會因此而受到嘲笑,但也要看看CORBA。 它現在並不流行,但有許多實質性的技術信譽,特別是如果通信的一端是C ++。 恕我直言,它是WS- *,支持OO,不需要角括號。 對於互操作,我認為它仍然應該有一個席位。 從事C ++開發時,我發現OmniOrb非常有效和高效。 看看這個SO問題有關在.Net中使用CORBA的一些指示。

套接字是最簡單的; 我會永遠那樣做。 如果數據庫是一個選項,這也是微不足道的,但這確實取決於。 如果它是排隊的事件,這是有道理的,但如果它的請求/響應,它可能不是那么好。

您可以使用gsoap讓C / C ++程序使用Web服務。

您還可以調用用C ++編寫的cgi程序。

我在C中編寫了一個與C#客戶端通信的服務器,並且endianess可能很難處理,webservices簡單得多。

您是否希望它相互通信(例如,通過tcp(像許多其他人指出的那樣))或者您是否希望能夠將對象從C#轉換為C ++? 如果是這樣,請查看Apache Thrift( http://incubator.apache.org/thrift/ )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM