共有メモリを使用すると、共有メモリバッファ(または事前に十分に割り当てるだけ)。また、そこに置くデータ構造を手動で管理する必要があります。テストして作業したら、そのシンプルさのために使用とテストがより簡単になります。
リモートルートを使用する場合は、名前付きパイプを使用して単一のシステム通信にTCPチャネルまたはHTTPチャネルの代わりにIpcChannelを使用できます。 http://msdn.microsoft.com/en-us/library/4b3scst2.aspx。このソリューションの問題点は、プロセスがエンドポイントを登録できるレジストリタイプのソリューション(共有メモリまたはその他の永続ストアのいずれか)を考え出す必要があることです。そうすれば、それらを探しているときに、システム上で実行されているすべてのエンドポイントを照会する方法を見つけることができ、探しているものを見つけることができます。 Remotingを使用する利点は、シリアライゼーションとメソッド呼び出しが非常に簡単なことです。また、ネットワーク上の複数のマシンに移動する場合は、代わりにネットワークチャネルを使用するようにスイッチを切り替えることもできます。問題は、「リモート」コールと「ローカル」コールとが明確に分離されていない限り、リモート処理が苛立ってしまうことです。
私はWCFについてよく分かりませんが、それも検討する価値があります。スパイダーセンスによれば、おそらくこの問題に対するより洗練された解決策があると言えます。
また、他のすべてのプロセスとは別の「サーバー」プロセスを作成して起動することもできます(複数のシステムが起動していないことを確認するためにシステムミューテックスを使用します)。他のすべてのプロセスの登録ハブ
もう1つイベント(パブリッシュ/サブ)のパブリッシュ・サブスクライブ・モデルを調べます。このテクニックは、イベントソースが利用可能になる前に起動されるリスナを持っているが、イベントの登録を待つことを望まない場合に役立ちます。 「サーバー」プロセスは、イベントレジストリを処理してパブリッシャーとサブスクライバーをリンクします。