我目前正在开发的项目使用这种范例,但没有设置系统。然而,我真的想找到一些我可以使用的系统,并具有以下要求。虽然从现在的系统转换到新系统需要一些时间,但我会节省更多的时间。
要求如下:
1.跨平台 2.快速 3.与C++良好兼容 4.支持跨进程封送
让我详细说明这些要求:
跨平台
基本上,我需要它在Windows和Mac上运行。Linux也不错,但不是必需的。此外,它确实需要为所有平台满足其他要求。有一个适用于Mac的COM,这将是理想的,但它不支持第四个要求。此外,它必须支持GCC和MSVC。
快速
这就是CORBA不幸失去的地方,尽管它满足其他三个要求。进程内方法调用需要尽可能快(理想情况下,像COM一样),因为其中一些例程也可能从音频中断调用。
与C++良好兼容
......我想这个要求大多是显而易见的。我不介意不使用C++类来实现组件,尽管这肯定会有所帮助,而且替代方案必须仍然易于使用,特别是因为最终我打算发布第三方扩展的API。
支持跨进程封送
我的意思是至少能够序列化调用。如果通过从IDL生成的代码来完成这项工作,那对我来说完全没问题,我也不介意实现跨进程通信本身。
COM很棒,但它不能完全满足第一要求。CORBA也很棒,但它不满足第二要求(即使使用最快的ORB)。XPCOM可能无法满足第二要求,并且无法与MSVC一起使用,因此也无法满足第一要求。
还有其他什么想法吗?我的下一步将是使用protobufs或类似的东西来自己开发,但当然我想避免这样做。
更详细地说,在这种情况下,音频中断可以低至2-3毫秒。那个时间甚至没有全部可用于我,因为其他组件需要在那段时间内进行处理,而我的软件本身也需要包装另一段需要在那段时间内进行处理的软件。这就是为什么无论是进程内还是跨进程的封送都需要非常快速的原因。