サンプルソースを作って。。。と思いましたが、環境を作ったりする時間が取れそうにないので、とりあえずメモだけ。
クエリ通知機能とは特定のテーブルテーブルに更新が合った場合にSQLServer側からイベントを発行してくれるような機能のようです。
ソケット通信に着替えると、サーバ(SQLServer)がUDPで更新情報を流しでクライアント(ADO.NET)がそれを受けてイベント発火。といったとことでしょうか。
詳細はここが参考になります。
で、クライアント側の処理を簡単に手順をまとめると、
- DBをオープンする
- 参照用のSqlCommandを生成する。SQL→「WAITFOR ( RECEIVE * FROM ContactChangeMessages);」
- SqlCommandにそれらしくCommandTimeoutを設定する
- SqlCommand.ExecuteReaderする
- SqlDataReader.Read()する。結果がtrueであれば結果有
※データベースに対して通知機能を有効にする必要があります。
おおざっぱにはこんな感じです。
アプリケーションサーバが複数台の構成になっていて、データを更新するたびに何かしら通知するような仕組みが必要な(つくりが悪い説もありますが。。。)場合、比較的楽に実装できそうですね。
0 件のコメント:
コメントを投稿