【问题标题】:C++ IPC replacement for local COM interface?本地 COM 接口的 C++ IPC 替代品?
【发布时间】:2010-11-23 15:15:03
【问题描述】:

当前设置:

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++

【问题讨论】:

  • 为什么要替换现有的?这个问题的答案可能会为更好的解决方案提供一些启示。
  • @John:“为什么”故意留空,以便让那些回答手头的问题的人集中注意力。

标签: c++ com ipc rpc


【解决方案1】:

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

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

【讨论】:

  • Steve - 目前它不是在进程中,它不应该在进程中,所以显然我不会将进程内调用与进程外调用进行比较。但是感谢指向 LRPC 的指针……看来 COM 已经非常优化了。
猜你喜欢
  • 1970-01-01
  • 2010-10-31
  • 2011-03-29
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 2019-11-26
  • 2010-10-28
相关资源
最近更新 更多