我需要編寫一些C/C++代碼才能移植到Windows和Linux上,它們使用RPC
(僅在同一主機上的進程之間,不跨網絡,因此不需要跨平臺調用)。可以在Windows和Linux上運行的RPC接口?
Windows有MSRPC,Linux有Sun-RPC,但它們在編寫RPC調用和方法的方式上,甚至在您如何部署RPC服務方面都不兼容。
有沒有人有任何關於如何解決這個問題的聰明想法?
我需要編寫一些C/C++代碼才能移植到Windows和Linux上,它們使用RPC
(僅在同一主機上的進程之間,不跨網絡,因此不需要跨平臺調用)。可以在Windows和Linux上運行的RPC接口?
Windows有MSRPC,Linux有Sun-RPC,但它們在編寫RPC調用和方法的方式上,甚至在您如何部署RPC服務方面都不兼容。
有沒有人有任何關於如何解決這個問題的聰明想法?
您是否考慮過一些JSONRPC(JSON是文本serialization格式,而JSONRPC是其上的RPC機器)?或者CORBA - 這是一個面向對象的RPC廣泛使用的標準Common Object Request Broker Archtecture?
或者可能是POCO libraries? POCO是一個跨平臺(兩個Posix & Windows)框架&庫設置在C++中,它包括網絡&進程& IPC設施。 Qt跨平臺工具包也有一個核心層,提供QtNetwork(用於網絡套接字)和QProcess(用於管理進程)。
我改進了我的回答,但我不同意Wim Ombelets的上述評論。我給出的鏈接被廣泛使用和穩定(我給出的名稱是可以使用的)。解釋一個廣泛使用的庫的描述並不會帶來任何新的東西。問題本身(明智地)只給出* MSRPC *和* Sun-RPC的鏈接 - 沒有解釋 - – 2014-10-03 07:06:56
您可能會考慮使用qjsonrpc。它是一個在Qt庫之上開發的庫,提供了易用的jsonrpc支持。它提供了一個客戶端和一個服務器,並且在linux/osx/windows上受支持。
免責聲明:我是qjsonrpc的作者,希望你們試試看!
'#if defined(WIN32)... #elif defined(__ LINUX__)... #else ... #endif' – 2014-10-02 20:12:47
ZeroMQ or similar? – Niall 2014-10-02 20:13:29
boost.interprocess存在。我從來沒有嘗試過。 – dohashi 2014-10-02 20:15:13