0

互いにメッセージを送受信できるようにする必要がある、多くの個別の EXE を含むソリューションがあります。現在、各 EXE は事前にお互いを認識している必要があり、通信には IPC を使用していますが、より洗練されたソリューションが本当に必要です。

各 EXE が自分自身をエンドポイントとして登録し、任意の EXE がファクトリにアクセスして、登録されているすべてのエンドポイントのリストを取得できるファクトリが必要です。話すすべてのプロセスに関するすべての詳細を事前に知ること。

ファクトリ DLL を作成しましたが、それをグローバル インスタンスにする方法がわかりません。これは、ソリューション内で実行中のすべての EXE 間で共有されるファクトリの 1 つのインスタンスです。NT サービス、グローバル アセンブリ キャッシュを介して WCF を使用するように言われ、allUsers AppData にシリアル化されたエンドポイントを含む XML ファイルを維持するように言われました。これらのオプションについてはまだ調査していませんが、数日中に調査を開始する予定です。

ここで誰かが、私がしなければならないことを達成するためのシンプルでエレガントで常識的な提案を推奨できるかどうか疑問に思っています (実行中の多くのプロセス間で単一のインスタンス ファクトリを共有します)。

4

1 に答える 1

1

DLL 自体は、各 EXE のアドレス空間にロードされます。ただし、DLL で共有メモリ ブロックを宣言することも、Windows API を使用してメモリ マップ ファイルを直接使用することもできます。このようにして、複数の EXE (または複数の EXE にロードされた同じ DLL) から同時にアクセスできるメモリ ブロックを取得します。メモリ ブロックへの同時書き込みを防ぐには、mutex が必要です。それで全部です。

また、WCF やその他のタスクに関する複雑なことは忘れてください。これらのアドバイスを提供する人は、通常、IPC やシステム API についてあまり知らず、知っていることだけを推奨しています。

于 2013-02-21T15:05:19.227 に答える