来自{Python |的远程过程调用Ruby | ...}到C ++

时间:2014-10-21 02:09:20

标签: c++ sockets http client-server rpc

TL; DR:是否有框架可以将用X语言编写的客户端进程调用到用C ++编写的服务器进程?如果我使用TCP / IP或UDP或HTTP在进程之间进行通信,我不介意。

详情

我编写了一个用C ++编写的实时声音合成器。现在我想将它重写为一个服务器,它从一个单独的客户端进程获取高级指令("播放注释","停止注释"等)。理想情况下,客户端进程可以用任何语言编写,但我倾向于使用Python或Ruby。

我已经勾画出一种处理客户端和服务器之间通信的方法:客户端可以通过管道或套接字发出JSON,以便由声音服务器接收。然后,JSON将映射到服务器上的方法调用。简单。

这开始看起来很像做RPC(远程过程调用),但正如我研究过的那样,我只能找到" intra -language&#34的库; RPC(即C ++客户端到C ++服务器)。 inter -language RPC的唯一参考是Xerox PARC的Inter-Language Unification项目,但最后一次明显的活动是在2000年。

另一个选择是使用RESTful HTTP(或WebSockets)与声音服务器通信。有没有像我可以用来创建它的轻量级C ++框架?

注意:对于跨多台计算机而不仅仅是本地主机的系统,可以获得额外的功劳。

2 个答案:

答案 0 :(得分:0)

(如果SO给出了回答自己问题的徽章,我现在就会把它们弄成一堆......)

我认为是程序员朋友“编程的绿色贝雷帽”推荐Thrift并广泛使用它:

https://thrift.apache.org/

来自网页:

  

Apache Thrift软件框架,用于可扩展的跨语言服务开发,将软件堆栈与代码生成引擎相结合,构建可在C ++,Java,Python,PHP,Ruby,Erlang,Perl,Haskell之间高效无缝地工作的服务,C#,Cocoa,JavaScript,Node.js,Smalltalk,OCaml和Delphi等语言。

它继续展示一个Thrift定义文件的示例,该文件指定Java Server和Python Client之间的RPC。就是我一直在寻找的东西! (我仍然不知道为什么我的谷歌搜索失败了我...)

答案 1 :(得分:0)

我认为您正在寻找的是JSON-RPC:http://json-rpc.org/,或http://www.jsonrpc.org中的更新版本

这里列出了多种语言库,每种语言都有不同的权重。