0

私の考えは、2 つの WCF サービスをホストする Windows サービスを用意することです。

WCF サービス Aは、データベースにアクセスして CRUD 操作を実行するクライアント用です。「GetProducts」や「AddProduct」などの操作を公開します。

WCF サービス Bは、サービスに接続する WPF '管理者' コンソール用であり、どのクライアント アプリケーションがWCF サービス Aに接続されているかを表示できます。また、クライアントをサービスから切断するための操作を公開します。クライアントが実行したアクションを表示します。

私の質問は次のとおりです。

質問 1) WCF サービス Aに接続されているクライアントのリストを維持するために、おそらくサービス A のインスタンスに、クライアントの名前を含むある種のリストが必要になるでしょう (各クライアントには一意の名前があります)。これは、「単一インスタンス」モードを使用してWCF サービス Aを作成する必要があるということですか(そうしないと、各クライアントは、クライアントが 1 つしかないクライアントのリストを使用して、サービスの独自のインスタンスを生成します)。または、すべてのインスタンスが使用するWCF Service A の外部の静的クラスにクライアントのリストを配置するより良い方法です (おそらくロックを使用しますか?)

質問 2)「マネージャー」コンテナーで両方のサービスを設計するスマートな方法はありますか?

ありがとうございました。

4

1 に答える 1

0

2 つのコントラクト (標準および管理) に対して 2 つのエンドポイントを持つ単一のサービスを使用できます。2 つのエンドポイントに異なるセキュリティを適用できます。

現在接続しているユーザーのリストをシングルトンとして保持すると、InstanceContextMode を使用して制御することなく、いずれかのエンドポイントから更新して読み取ることができます。複数のスレッドがシングルトンを操作しようとする可能性が最も高いため、アクセスするときにスレッド同期を使用する必要があることを覚えておいてください。

于 2012-04-17T15:33:01.210 に答える