【发布时间】:2010-10-31 22:37:51
【问题描述】:
我一直迷恋于基于组件的编程(无论是使用 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 毫秒。那个时间对我来说甚至都不完整,因为其他组件需要在那个时间处理,而我的软件本身正在包装另一个需要在那个时间处理的软件。这就是为什么进程内和跨进程编组都需要非常快的原因。
【问题讨论】:
-
XPCOM 应该与 MSVC、AFAIK 一起使用。另外,如果没有,您不能只使用 MinGW 吗?
-
我可以使用 MinGW,但一方面,我的整个工具链都与 MSVC 集成在一起,虽然我也可以将 MinGW 集成到其中,但我无法使用 MSVC 中出色的调试器。
-
我认为如果你建造这个你会赚很多钱。进程中,进程外,pc,mac,linux,速度极快。大量的资金。 :)
标签: c++ c com cross-platform corba