私は、あるクライアントからのチャットメッセージがデータベースに入り、他のクライアントが5秒ごとにポーリングする(チャットアプリケーション)新しいメッセージがあるかどうかに関係なく、メッセージがフェッチされて表示されます。しかし、これは、一方のユーザが低速で接続し、他方のユーザが非常に速い接続になっているときに問題を引き起こす。私はポーリングの必要性が残らないようにデータベースに新しい行が挿入されたときにメソッドが実行されるメカニズムを開発したい。ユーザは、新しいチャット・メッセージがいずれかのクライアントによってデータベースに入力された場合にのみmsgをフェッチし、そうでなければすべてがアイドル状態のままである。どんな助けも高く評価されます。私はasp.netとC#を使用しています。新しい行がデータベースに挿入されるたびにC#でコードを実行したい
2
A
答えて
2
あなたは、ポーリングモデルからパブリッシュ/サブスクライブモデル(ポーリングよりチャット/フィードを実行する方がはるかに良い方法です)に移行することを説明しています。 2つの可能なリソースはこの記事Publish/Subscribe design pattern implementation in C#とこの前のスタックオーバーフローに関する質問です。Pub/Sub architectureです。
1
私はあなたのアプリケーションを実装するさまざまな方法についてコメントしておらず、あなたが質問した質問に集中することに集中します。Query Notificationsを使用してこれを達成できます。これらを使用して多くのことを行うことができますが、基本的な前提は、これを設定すると、SQLサーバーに関心のあるクエリを与え、結果が変わったときにアプリケーションに通知するということです。
妥当なチュートリアルがあります(このコードはVB.NETにありますが、それほど大きな変更はありません)here。
関連する問題
- 1. spring-security-oauthに新しいアクセストークンが挿入されるたびにコードを実行する方法は?
- 2. 新しい行がデータベースに挿入されていません
- 3. 実行されたプログラムの新しいウィンドウで、Cコードまたはバッチファイルでコマンドを実行します。
- 4. 実行された行が挿入されていない行数
- 5. SQLiteデータベースに挿入された行の数が負である
- 6. sqlxでPostgresに新しく挿入された行を返す
- 7. SQL行がマスターに挿入されたときに行が挿入される
- 8. データセットの新しい行にdatarowフィルタ値を挿入したい
- 9. プログラムを実行するたびに、レコードがデータベースに挿入されます。 SQLiteデータベース
- 10. 新しい行が挿入された場合に警告するMySQL関数
- 11. aspアプリケーションでストアドプロシージャを実行した後にデータベースが更新されない
- 12. コードで実行されたときに更新クエリが更新されない
- 13. IPython 5、新しい行を挿入する代わりにコードのブロックを実行するためのキー
- 14. 実行時にメソッドを記録するための新しいコード行を挿入する
- 15. 呼び出された関数が実行される前にコードを実行
- 16. 別のテーブルの新しい行がExcelに挿入されたときに新しい行をテーブルに挿入する方法
- 17. laravelのページネーションはデータベースに新しい行を挿入します
- 18. 新しく挿入された行のセルでTable.getCell()が機能しない
- 19. Webアプリケーションを介してレコードがSQL Serverに挿入されるたびに、winformsプログラムが実行される
- 20. 新しい行がpostgresqlに挿入されたときにテーブルの列を更新するためのトリガー?
- 21. 行が挿入されたときにUDFが更新されない
- 22. データベースに送信する必要がなく、新たに挿入された行を返します。
- 23. コードは2つの行をデータベースに挿入しています
- 24. 新しい行が挿入されたときに最後の行を動的に調整します。
- 25. クラス関数を呼び出した後にJavaコードが実行されない
- 26. git fetchを実行した後にコードがダウンロードされない
- 27. テーブルに新しい行を挿入
- 28. bashプロンプトに新しい行を挿入
- 29. テーブルに新しい行を挿入
- 30. 各ドットの後に新しい行を挿入するC++
これに対する答えは、アプリケーションのアーキテクチャに大きく依存します。これについてもっと具体的に考えてください。指定されたタグの1つがajaxポーリングであることがわかります。これはブラウザベースのasp.netアプリケーションですか?それとも、Windowsクライアントはすべてwcfサービスの何らかの形で通信していますか? – jdavies