我想用 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 )。
- 基于Protocol Buffers或Thrift的 RPC 。
- 基于Boost.Python的集成
IPC 和 RPC 解决方案似乎不错,但我必须编写一个大包装器才能从第 1 点获取功能。另一方面,我没有找到有关在 C++ 守护程序中使用 Boost.Python 的信息,我不知道它是否是甚至可能。