我一直迷恋于基于组件的编程(无论是使用 COM、另一个系统,还是仅使用纯 C++ 中的范例)。如果一个人通常习惯于“传统”OOP 模型,它需要一点时间来适应,但它绝对值得。它使我的代码更易于维护和扩展。
我目前正在做的项目是使用范式,但没有设置系统。但是,我真的很想找到某种可以满足以下要求的系统。从我现在拥有的系统切换到新系统需要一些时间,但我会在以后节省很多时间。
要求:
- 跨平台
- 快速地
- 适用于 C++
- 支持跨进程编组
让我详细说明这些要求:
跨平台
基本上,我需要它在 Windows 和 Mac 上工作。Linux 会很好,但绝不是必不可少的。此外,它确实需要满足所有平台的其他要求。有一个适用于 Mac 的 COM,非常理想,但它不支持要求 4。此外,它必须同时支持 GCC 和 MSVC。
快速地
这就是 CORBA 不幸失败的地方,尽管它满足了其他三个要求。进程内方法调用需要尽可能快(理想情况下,如 COM),因为某些例程也可能从音频中断中调用。
适用于 C++
...我想这个很明显。我不介意不使用 C++ 类来实现组件,尽管这肯定会有所帮助,而且替代方案必须仍然易于使用,特别是因为最终我打算发布一个用于 3rd 方扩展的 API。
支持跨进程编组
我的意思是至少能够序列化调用。如果这是通过 IDL 生成的代码来完成的,那对我来说完全没问题,而且我也不介意实现跨进程通信本身。
COM 会很棒,但它不能完全满足要求 1。CORBA 也会很棒,但它不满足要求 2(即使有最快的 ORB)。XPCOM 可能不满足要求 2,并且不适用于 MSVC,因此不满足要求 1。
有什么想法吗?我的下一步将是使用 protobufs 或类似的东西来推出自己的产品,但我当然想避免这种情况。
更新
详细说明 - 在这种情况下,音频中断可以低至 2-3 毫秒。那个时间对我来说甚至都不完整,因为其他组件需要在那个时间处理,而我的软件本身正在包装另一个需要在那个时间处理的软件。这就是为什么进程内和跨进程编组都需要非常快的原因。