0

まず、現在の状態について説明します。
サーバーは、異なるマシン上の 1 つまたは複数の win サービスでホストされている複数の WCF サービスで構成されています。

  1. さまざまなデバイスからデータを受信するサービス。デバイスとの通信は、ソケットを使用して実装されます。サービス インスタンス モード - シングルトン。
  2. データ ブローカー サービス - データの永続化とリクエストによる共有を担当します。インスタンス モード - シングルトン。
  3. 構成サービス - 構成データベースの変更と管理コンソール (SSMS などの WPF アプリ) の操作を担当します。コンソール、加入者管理などからの接続を処理します。インスタンス モード - シングルトン。
  4. クライアント アクセス サービス - 上記のクライアント管理とまったく同じですが、クライアントに新しいデータを通知し、サービス バスへのファサードのように機能します。そして再びシングルトン。
  5. ID 管理サービス - 権限を確認し、結果を返します。シングルトン。

これらのサービスはすべて NServiceBus に接続されており、現時点での動作が非常に気に入っています。

ただし:
シングルトンが多すぎます。主な理由は、サービスバスを使用するには、それの単一のインスタンスが必要です。セッション モードで nservice バスを使用できるかどうかはわかりませんが、これらのサービスすべてが 1 つのキューを使用するという問題を処理する方法がわかりません。

300 人以上のクライアントがいる場合はどうなりますか? シングルトンが応答しなくなる可能性があります..

そして、これらすべてについて何人かの批評家に尋ねたかったのですが、誰かが何か提案できるかもしれません.

前もって感謝します。
アレクセイ

4

1 に答える 1

4

アレクセイ、

プロセスごとにバスのインスタンスは1つだけにする必要がありますが、そのインスタンスをグローバルにアクセス可能な場所に配置し(AsyncPagesサンプルに示されているように)、WebページやWCFサービスなどの非シングルトンオブジェクトから使用できます。

また、すべてのサービスで1つのキューを使用することはおそらく適切ではありません。あなたの状況をよりよく理解することなく、私はあなたが特定したサービスごとに1つのキューのデフォルトの推奨を与えるでしょう。

お役に立てば幸いです。

于 2009-12-18T21:11:28.557 に答える