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

时间:2010-11-23 15:15:03

标签: c++ com ipc rpc

当前设置:

Windows C ++ native Application提供了一个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 ++

1 个答案:

答案 0 :(得分:2)

进程之间的性能永远不会将本地COM与进程内服务器匹配,因为进程内COM调用会减少为调用线程上的简单函数调用。对于进程间流量,总是会有编组和上下文切换开销,这会使速度变慢。

更进一步,你不可能构建任何像COM一样简单的东西,它可以像COM一样执行任何操作。对于本地进程外服务器,COM将运行名为LRPC的优化RPC堆栈。