![](/img/trans.png)
[英]What is the best way to pass information from a C# app to a C++ app while both are running?
[英]What is the best way for C# app to communicate unix c++ app
我能想到的方式
你知道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.