私はVB.net 2010
とSQL 2008
にこのアプリケーションを開発していました。
私は、dbの更新をクライアントに通知したいと思っていました。アプリケーションは、タイマーを使って指定された分の変更をdbでチェックしていましたが、これは本当に効率的ではありません。私は約query notification
、sqldependency
、service broker
を読んでいますが、100クライアントがあれば効率的ではないかもしれないと言ったものを読んで、アプリケーションに通知をプッシュするためにクエリ通知を使用しています。
誰かが私が何をすべきか、どのようにできるかについて助けてくれるでしょうか(例があれば本当に役に立ちます)。前もって感謝します!私のデータベース(SQL)がクライアントアプリケーションに更新を通知またはプッシュするようにしたい
答えて
クエリ通知はService Brokerサービスにプッシュされ、アプリケーションには直接送られません。どのように動作するかについては、The Mysterious Notificationを参照してください。あなたのアプリケーションは、WAITFOR(RECEIVE)
ステートメントをデータベースに掲載して通知を待っています。これは、100のクライアントのそれぞれが1つのSQL Serverワーカースレッドを占有していることを意味します(制限されています、max worker threads
オプションを参照)。私は+ 1000クライアント(最大ワーカースレッドオプションをバンプアップした後)の生産でこれを見てきましたが、私はに対してに対してアドバイスします。
私は、のサービスモニタリングをSqlDependency/QueryNotificationsを使用して行うことをお勧めします。このサービスは、WCFを使用して、実行中のすべてのアプリケーションに通知をプッシュします。一般的な変更(the table Foo was changed
)を購読し、特定のもの(the row x in table Foo was inserted
)には加入しません。
一般的に、SqlDependency/Query通知は、データが変更されたことを通知するだけですが、新しいデータをにプッシュしません。アプリケーションは、一度通知されると、クエリを再度実行してローカルデータセットを更新する必要があります。
SqlDependencyクラスを使用する場合は注意してください。メモリリークのあるproblemsがあります。 Hovewerでは、SqlDependencyクラスのオープンソース化を利用できます - SqlDependencyEx。データベースのトリガーとネイティブのService Broker通知を使用して、テーブルの変更に関するイベントを受け取ります。 SqlDependecyExで
int changesReceived = 0;
using (SqlDependencyEx sqlDependency = new SqlDependencyEx(
TEST_CONNECTION_STRING, TEST_DATABASE_NAME, TEST_TABLE_NAME))
{
sqlDependency.TableChanged += (o, e) => changesReceived++;
sqlDependency.Start();
// Make table changes.
MakeTableInsertDeleteChanges(changesCount);
// Wait a little bit to receive all changes.
Thread.Sleep(1000);
}
Assert.AreEqual(changesCount, changesReceived);
あなたはDELETEとINSERT避け、単にUPDATEを監視することができます:これは使用例です。お役に立てれば。
- 1. 私は私のアプリはプッシュ通知をサポートしたい、と私は以下のように行うプッシュ通知
- 2. ウェブサイトが更新されるたびにプッシュ通知を送信
- 3. は、私は通知に表示するためにプッシュ通知を取得しようとしてる
- 4. プッシュ通知の更新Android
- 5. Firebaseプッシュ通知がテキストを同時に更新しない
- 6. は、私は以下のようにプッシュ通知をするために加入していますAPI
- 7. データベースの更新時にfirebaseを使用したバックグラウンド通知
- 8. 更新方法プッシュ通知を有効にしているアプリケーション
- 9. 隠すプッシュ通知アプリは、私がイオンアプリに解析サーバからのプッシュ通知を送信しています
- 10. アプリが終了したときにプッシュ通知によるディープリンク
- 11. firebaseデータベースの値が変更されたときにプッシュ通知を作成
- 12. ワードプレスのデータベース。私がsourcetreeを通してコードをプッシュしたときにbitbucketで更新されない?
- 13. どのように私は更新またはデータベース
- 14. あなたのアンドロイドアプリにプッシュ通知を通知する方法
- 15. Azureのは - 私がしようとするたびにSQLデータベース
- 16. PubSubHubbubを介した新しいライブブロードキャストのプッシュ通知
- 17. プッシュ通知がTestFlightまたはAppStoreになければプッシュ通知が機能しません
- 18. プッシュ通知:新しい解析アプリケーションでアプリケーションを更新
- 19. 次回更新版で通知をプッシュ
- 20. 新しい画像のたびにプッシュ通知を送信する方法
- 21. Firebaseによるプッシュ通知
- 22. Djangoはデータベース値が変更されたときにプッシュ通知を送信します
- 23. 他のリンゴアカウントに変更した後にプッシュ通知が表示されない
- 24. プッシュ通知バッジカウントが更新されていません
- 25. 私のように定義された通知持っ通知
- 26. 更新日時私はデータベースに日付を更新したい
- 27. SignalRデータベース更新通知
- 28. 新Macで通知通知をプッシュ
- 29. firebaseデータベースが更新されたときに通知を送信する
- 30. は、私は、通知が到着したときの断片にブロードキャストを送信しようとする通知