C++ IPC替代本地COM接口?

问题描述:

当前设置:C++ IPC替代本地COM接口?

Windows C++本地应用程序提供了一个COM接口,该接口由许多插件可执行文件使用(RPC样式,简单函数调用)。通讯仅在本地机器上进行。

[App.exe (COM server)] <-> [plugin1.exe (COM client/possible callbacks etc.)] 
         <-> [plugin2.exe (COM client)] 

我们现在想用所选插件的其他内容替换COM接口。

我们对本地“RPC风格”的IPC有哪些选择,它们和COM一样容易使用?

以下限制:

  • 性能必须至少为本地COM调用一样好。 (根据Steve's answer,任何不会执行比本地进程外COM调用更差的替代方法已经有所帮助!)
  • 该接口应该易于使用。在客户端或服务器中使用接口时,不会显式地摆弄内存和原始套接字。在Windows
  • 本地C++
+2

为什么要取代你有什么?这个问题的答案可能会让我们看到更好的解决方案。 – 2010-11-23 15:22:18

+0

@John:“为什么”故意留空以专注于回答问题的人。 – 2010-11-24 08:44:29

进程之间的性能绝不会本地COM匹配的进程内服务器,因为在进程间COM调用降低调用线程上一个简单的函数调用。对于进程间流量来说,总是会发生封送处理和上下文切换开销,从而导致速度变慢。

更进一步,你不太可能建立任何像COM和COM一样简单的任何东西。对于本地进程外服务器,COM将运行在名为LRPC的优化RPC栈上。