2010-11-23 24 views
1

現在の設定:ローカルCOMインターフェイスのC++ IPC置換え?

Windows C++ネイティブアプリケーションは、多くのプラグイン実行可能ファイルによって使用される(RPCスタイル、単純な関数呼び出し)COMインターフェイスを提供します。通信はローカルマシン上でのみ行われます。

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

ここで、COMインターフェイスを選択したプラグインに置き換えることにします。

COMと同様に使いやすいローカルの「RPCスタイル」IPCにはどのようなオプションがありますか?

次の制限が適用されます

  • パフォーマンスは、ローカルCOM呼び出しと少なくとも同程度に良好でなければなりません。 (Steve's answerを照らして、ローカルのアウトオブプロセスCOMコールよりも大幅に悪い結果を出さない代替手段はすでに役に立ちます!)
  • インターフェイスは使いやすいものにする必要があります。クライアントまたはサーバーでインターフェイスを使用している間、明示的にメモリと未処理のソケットを使用することはありません。インプロセスCOMの呼び出しは、呼び出し元のスレッド上の簡単な関数呼び出しに減らすため、Windows上で
  • ネイティブC++は、プロセス間の
+2

あなたは何を持っているのですか?この質問に対する答えは、よりよい解決策を明らかにするかもしれません。 –

+0

@ジョン:「なぜ」は空白のままで、手元にある質問に答えた人たちに焦点を当てる。 –

答えて

2

パフォーマンスは、インプロセスサーバーにローカルCOMと一致することはありません。プロセス間トラフィックの場合、常にマーシャリングとコンテキスト切り替えのオーバーヘッドが発生し、これによりこの処理が遅くなります。

これをさらに進めれば、COMだけでなくCOMのようなものを実行するCOMのような単純なものを構築することはまずありません。ローカルアウトオブプロセスサーバーの場合、COMはLRPCという最適化されたRPCスタックで実行されます。

+0

スティーブ - 現在は処理中ではありません。プロセス内であってはいけないので、明らかにプロセス外の呼び出しをプロセス外の呼び出しと比較することはありません。しかし、LRPCへのポインタのおかげで... COMはすでにかなり最適化されているようです。 –

関連する問題