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



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

详细信息

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

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

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

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

注意:对于跨多台机器(而不仅仅是本地主机)工作的系统来说,这是一个额外的荣誉。

(如果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服务器和Python客户端之间的RPC。这正是我想要的东西!(我仍然不知道为什么我的谷歌搜索失败了…)

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

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

最新更新