複数のサービスに接続するクライアントアプリ(WPF)があります。これらのサービスの1つはリマインダーサービスです。これはクライアントにコールバックを返し、クライアントに「リマインダー」メッセージを送信して、クライアントが画面に表示できるようにします。
しかし、あなたは尋ねるかもしれません-このコールバック操作はいつサービスからクライアントに実行されますか?
これは、新しいリマインダー行がデータベースに追加されたときに発生します(「コマンドサービス」によって)。
これを実装する方法は2つあります。
方法A:
「リマインダーサービス」がインスタンス化されると、「ワーカースレッド」も開始され、データベースに追加された新しいリマインダーがないかMS SQLデータベースをチェックします(「SqlDependency」を使用するか、数分ごとにデータベースをポーリングします)。 \ 時間)。新しいリマインダーが見つかると(「ワーカースレッド」は、それに接続されているすべてのWPFクライアントをループします)、「リマインダーコールバック」メッセージを送信します。
方法B:
'コマンドサービス'(データベースに新しいリマインダーを追加する実際のサービス)に、何らかの方法で'リマインダーサービス'をトリガーして通知します-'データベースに新しいリマインダーを追加しました。続けて、接続されているすべてのクライアントにリマインダーを送信します。
方法C:
これは実際にはメソッドBの詳細です。「コマンドサービス」を「リマインダーサービス」に接続して「PublishReminder」メッセージを送信します。これにより、「リマインダーサービス」がすべてのクライアントを調べて送信します。コールバックメソッドによるリマインダー。
。
最良の方法は何ですか?これを行うためのより良いアイデアはありますか?