すべてのクライアントが接続する 2 つの WCF サービスを設計しています。これらのサービスの 1 つが通知サービスです。
各クライアントがサービスに接続し、サブスクライブしてから、デュプレックス コールバック インターフェイスを使用して通知を受信するようにします (サービスはクライアントで「通知」操作を開始します)。
これは私のデザインのアイデアです:
私の質問は次のとおりです。各クライアントがサービスに接続するときに、データベースの「ユーザー」テーブルに対して検証します ( UserNamePasswordValidatorを使用し、「検証」関数を実装します)。
要件: 各ユーザーは、データベースで定義されたルールに基づいて、異なる通知を受け取る必要があります。
私のサービスがデータベースの変更を検出したとします (タイプ「wine」の新製品がデータベースに挿入されました) - クライアントに通知する必要があります。ただし、すべてのクライアントにこれを通知する必要があるわけではありません。ワインに関する最新情報をリクエストしたクライアントのみに通知する必要があります。
これを行うにはどうすればよいですか?
クライアントが接続し、 UserNamePasswordValidatorを使用して検証されると、そのクライアントに何らかの「ClientID」が添付されますか?
サービスに「クライアント エンドポイント + クライアント ID」のローカル リストを保存するべきではないことはわかっています。これは、Singleton サービスを使用する必要があることを意味します。
では、サービスに接続する各クライアント (そのクライアントの ID) をどのように保存すればよいでしょうか?
データベース内のイベントが発生したときに、接続されているすべてのクライアントをループできるように、各クライアントの ID を知る必要があります。そのイベントについての通知を要求したかどうかをそれぞれチェックし、そうであれば、そのことを彼に通知します。イベント。
私の質問が理解されることを願っています...