2010-11-23 66 views
1

當前設置: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

回答

2

進程之間的性能絕不會本地COM匹配的進程內服務器,因爲在進程間COM調用降低調用線程上一個簡單的函數調用。對於進程間流量來說,總是會發生封送處理和上下文切換開銷,從而導致速度變慢。

更進一步,你不太可能建立任何像COM和COM一樣簡單的任何東西。對於本地進程外服務器,COM將運行在名爲LRPC的優化RPC棧上。