3

同じ企業ネットワーク上に多数のWPFクライアントがあります。これらのクライアントが互いにメッセージを共有することを望んでいます。別のサーバープロセスを実行したくないので、ブローカーレスソリューションが最適と思われます。PNRPの使用を検討しましたが、これには各クライアントでPNRPサービスを実行する必要があるようです。すべてのクライアントがこれを実行するか、実行できるかを保証できるかどうかはわかりません。シンプルで非常に軽量であるという点で理想的に見えるZeroMqも調べましたが、TCP / IPスタイルの通信のエンドポイントを知る必要があり、各クライアントは他のクライアントを認識せず、何らかの方法で必要になりますお互いを発見する。

だから私は質問は私が法案に合うと私が考えていなかったオプションがあるかどうかだと思いますか?

助けてくれてありがとう。

4

6 に答える 6

4

ZeroMQ pub-sub パターンは、数百のクライアントに到達するまではシンプルで高速です。アプリケーションを変更せずに、実際のマルチキャスト プロトコル (PGM) に切り替えることができます。

于 2012-11-10T04:59:27.117 に答える
3

おそらく、NServiceBusを確認する必要があります。これは真のサービス バスであるため、中間にブローカー マシンはありません。MSMQ で実行されるため、Windows サーバーはすぐに使用できます。また、トランザクション メッセージングもサポートしています。また、マルチキャスト要件を満たすパブ/サブモデルもサポートしています。

于 2012-11-08T15:56:13.167 に答える
2

商用製品の使用を気にしない場合: OMG の Data Distribution Serviceは、探していることを実行できるいくつかの実装を備えた標準です。それらの少なくとも 1 つはC# をサポートしており、マシンに何もインストールする必要はありません。ライブラリだけです。開示:私はこの会社で働いています。

したがって、基本的にはマルチキャスト スタイルの通信が必要ですが、マルチキャストを使用する必要はありません。これには、企業ネットワーク内で一連のアドレスを設定し、インフラストラクチャなどを含める必要があるためです。

デフォルトでは、DDS は検出と通信にマルチキャストで UDP/IP を使用しますが、ユニキャストのみまたは TCP で UDP を使用するようにプログラムまたは構成ファイルを介して指示できます。これはアプリケーション ロジックには影響しないため、概念的なマルチキャストの性質が維持されます。ただし、IP マルチキャストを自由に使用できない場合は、すぐに使用できる自動検出機能の一部が失われます。この場合、通信に参加する可能性のあるすべてのノードの IP アドレスまたはホスト名を事前に知っておく必要があります。そこから、ミドルウェアはこれらのうちの誰実際に存在するかを発見し、それに応じて通信を調整することができます。

ただし、後者は、選択したどのソリューションにも当てはまると思います。完全に自動検出するには、マルチキャスト/ブロードキャスト、またはシステムで実行されている既知の検出サーバーが必要です。

于 2012-11-08T20:00:58.617 に答える
1

WCF のピア ツー ピア プロトコルを検討しましたか? 詳細については、http: //msdn.microsoft.com/en-us/library/cc297274.aspxを参照してください。

于 2012-11-08T16:01:16.433 に答える
0

これには、ZeroMQ が適しています。検出の問題を解決するには、すべてのクライアントが起動および停止時にチェックインするサーバーを立てます。このサーバーは、パブリッシャーとサブスクライバーの両方として ZeroMQ を実行することもできます。

クライアントはサーバー上の 1 つのポートにパブリッシュし、サブスクライバーをそのポートにバインドして、チェックインおよびチェックアウト メッセージを取得します。次に、サーバーは、クライアントがサブスクライブする別のポート (バインドも行う) でこれらのメッセージを発行します。

于 2013-01-17T21:29:42.350 に答える