1

ローカル ネットワーク A と B に 2 つのアプリケーションがあります。アプリケーション A はサーバーであり、データの配列をアプリケーション B のすべてのインスタンスにブロードキャストする必要があります。アプリケーション B のインスタンスがこの配列のアイテムを受信した場合、別の B インスタンスは受信しません。アプリケーション B がアプリケーション A の開始前または開始後に開始できる場合は、このアイテムを受け取ります (2 つのアプリケーション間の通信は影響しません)。このシナリオを適用する .NET の最適なテクノロジまたは方法は何ですか?

4

1 に答える 1

1

単一配信とは、これが実際にはブロードキャストではないことを意味します。「ブロードキャスト」して 1 つの受信者に限定することはできません。A を動作させる必要があるということは、それを TCP ソケットにすることはできないということです。

ワーク キューとして真ん中にミドルウェア ボックスが必要なようです。A はアイテムをキューに追加でき、B のインスタンスはアイテムをデキューできます。セットアップが簡単で、無料で、非常に効率的であるため、私は redis のようなものを使用します。redis のコンテキストでは、A がRPUSH(新しいアイテムを最後に配置するために) 呼び出し、各 B がLPOP(最初からアイテムを削除するために) 呼び出します。データがない場合、各 B は単純に定期的にポーリングできます。データが削除されるとLPOP、データがなくなるまでループし、代わりに定期的にポーリングできます。BLPOPきつくループしたくない場合は、ブロッキング ポップ ( ) もありますが、個人的には好きではありません。新しいデータをすぐに知る必要がある場合は、組み込みの pub/sub ( PUBLISH/SUBSCRIBE) を使用して、クライアントがLPOP.

.NET で使用できるさまざまな redis クライアントがあります。

上記の個々のコマンドを除いて、上記のほとんどは任意の形式のメッセージ バスに変換されます。MSMQなど

于 2013-03-14T08:08:52.807 に答える