0

複数のサービスに接続するクライアントアプリ(WPF)があります。これらのサービスの1つはリマインダーサービスです。これはクライアントにコールバックを返し、クライアントに「リマインダー」メッセージを送信して、クライアントが画面に表示できるようにします。

しかし、あなたは尋ねるかもしれません-このコールバック操作はいつサービスからクライアントに実行されますか?

これは、新しいリマインダー行がデータベースに追加されたときに発生します(「コマンドサービス」によって)。

これを実装する方法は2つあります。

方法A:

「リマインダーサービス」がインスタンス化されると、「ワーカースレッド」も開始され、データベースに追加された新しいリマインダーがないかMS SQLデータベースをチェックします(「SqlDependency」を使用するか、数分ごとにデータベースをポーリングします)。 \ 時間)。新しいリマインダーが見つかると(「ワーカースレッド」は、それに接続されているすべてのWPFクライアントをループします)、「リマインダーコールバック」メッセージを送信します。

方法B:

'コマンドサービス'(データベースに新しいリマインダーを追加する実際のサービス)に、何らかの方法で'リマインダーサービス'をトリガーして通知します-'データベースに新しいリマインダーを追加しました。続けて、接続されているすべてのクライアントにリマインダーを送信します。

方法C:

これは実際にはメソッドBの詳細です。「コマンドサービス」を「リマインダーサービス」に接続して「PublishReminder」メッセージを送信します。これにより、「リマインダーサービス」がすべてのクライアントを調べて送信します。コールバックメソッドによるリマインダー。

最良の方法は何ですか?これを行うためのより良いアイデアはありますか?

4

1 に答える 1

1

あなたの説明を踏まえて、メソッド C のいくつかのバリエーションを使用します。サンプル実装については、このリンクを参照するか、一般的にパブリッシャー/サブスクライバー ソリューションを参照してください。これは比較的一般的な問題であるためです。

于 2012-06-21T15:04:49.580 に答える