从{Python|Ruby|..}到C++的远程过程调用
remote procedure calls from {Python | Ruby | ...} to 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
这里列出了许多语言的几个库,每个库都有不同的权重。
- 在C++中调用 MS SQL 存储过程
- C++ 如何在 OpenGL 程序中远程调用控制台窗口
- 在调用过程中删除 std::函数
- C++:如何在对象构造过程中调用初始值设定项列表之外的成员构造函数
- 使用参数调用远程进程中的函数(注入的 DLL)
- 是否可以使用InProceChannel使用Java客户端在同一过程中调用C 服务器
- 如何使用ABI调用过程在堆栈上正确传递Float参数
- CPP矢量构造函数在擦除过程中调用
- Qprocess启动的嵌套远程过程仍然是僵尸
- 远程过程调用-客户端提供的服务
- 远程过程调用和MIDL:如何使用[OUT]属性实现功能
- C 中的远程过程调用(RPC):在硬编码端点时,可以多个客户端侦听一台服务器
- 异步过程调用被另一个线程中断
- 选择远程过程调用 c++ 库
- C++远程方法调用
- 从{Python|Ruby|..}到C++的远程过程调用
- 对C++对象的并发远程过程调用
- 是否有可能通过远程方法调用将linux中的c++程序与作为服务器的c#程序进行通信?
- 异步过程调用
- 用MFC中的异步过程调用中断一个accept winsock调用