Woj*_*ilo 5 c++ python rpc boost ipc
我想用C++编写一个守护进程,它将保存图形数据结构并计算一些依赖性.我还希望拥有Python Batch(也是守护进程 - 基于HTML的GUI的后端),它将允许用户在这些C++结构上进行交互操作 - 添加/删除/连接/ ...节点并读取计算结果.
我很乐意选择最好的沟通机制.
强制功能是:
n1 = node('a'); n2 = n1.add_subnode('b'); n2.ports('test').connect(node('c'))目前我在考虑:
IPC和RPC解决方案似乎很好,但我必须编写一个大包装器来从第1点获取功能.另一方面,我没有找到有关在C++守护程序中使用Boost.Python的信息,我不知道它是否是甚至可能.
Boost.Python 可以在守护进程中使用。
Thrift 和 Protocol Buffers 工作正常。Thrift 实现了完整的 RPC 服务器,而 protobuf 除非去年情况发生了变化,否则只提供序列化。就我个人而言,我更喜欢节俭。
这两种解决方案之间的区别在于速度(Boost.Python 肯定更快,尽管如果您指定正确的套接字选项 - TCP_NODELAY 等,RPC 并不是很慢),而且事实上,在 Boost.Python 的情况下,您的二进制文件依赖于某个Python 版本。对于 Thrift,您的依赖关系较少,特别是当 Thrift 本身作为操作系统发行版的软件包安装时。无论如何,这是一个性能和部署的问题。如果不知道通信速度应该有多快,以及要在哪里以及如何部署程序,就无法回答这个问题。
UPD:你真的需要用 C++ 编写你的守护进程吗?如果这是因为在图上执行了大量计算,也许只有计算部分应该用 C++(扩展模块)?扩展通常优于其他技术。
| 归档时间: |
|
| 查看次数: |
1312 次 |
| 最近记录: |