【发布时间】:2013-05-23 05:07:26
【问题描述】:
我想用 C++ 编写一个守护进程,它将保存一个图形数据结构并计算一些依赖关系。我还想要 Python Batch(也是一个守护进程 - 基于 HTML 的 GUI 的后端),它将允许用户对这些 C++ 结构进行交互操作 - 添加/删除/连接/...节点并读取计算结果。
我很想选择最好的沟通机制。
强制功能是:
- Python 和 C++ 应该能够以面向对象的方式对节点进行操作,所以我希望能够编写像
n1 = node('a'); n2 = n1.add_subnode('b'); n2.ports('test').connect(node('c'))这样的代码 - Python Batch 不必与 C++ 守护程序“分离” - 它们可以具有相同的生命周期(但最好以某种方式将批处理与 C++ 守护程序分开,以防 C++ 崩溃或出现问题 - 这种分离是可选)
- 通信应该很快 - Python 应该能够获取有关大量节点的信息并允许最终用户尽可能顺利地工作。
目前我在想:
- 具有某种数据序列化机制的 IPC(如 0MQ)。
- RPC 基于Protocol Buffers 或Thrift。
- 基于Boost.Python的集成
IPC 和 RPC 解决方案似乎不错,但我必须编写一个大包装器才能从第 1 点获取功能。另一方面,我没有找到有关在 C++ 守护程序中使用 Boost.Python 的信息,我也不知道如果可能的话。
【问题讨论】: