2011-08-05 13 views
2

私は、あるクライアントからのチャットメッセージがデータベースに入り、他のクライアントが5秒ごとにポーリングする(チャットアプリケーション)新しいメッセージがあるかどうかに関係なく、メッセージがフェッチされて表示されます。しかし、これは、一方のユーザが低速で接続し、他方のユーザが非常に速い接続になっているときに問題を引き起こす。私はポーリングの必要性が残らないようにデータベースに新しい行が挿入されたときにメソッドが実行されるメカニズムを開発したい。ユーザは、新しいチャット・メッセージがいずれかのクライアントによってデータベースに入力された場合にのみmsgをフェッチし、そうでなければすべてがアイドル状態のままである。どんな助けも高く評価されます。私はasp.netとC#を使用しています。新しい行がデータベースに挿入されるたびにC#でコードを実行したい

+1

これに対する答えは、アプリケーションのアーキテクチャに大きく依存します。これについてもっと具体的に考えてください。指定されたタグの1つがajaxポーリングであることがわかります。これはブラウザベースのasp.netアプリケーションですか?それとも、Windowsクライアントはすべてwcfサービスの何らかの形で通信していますか? – jdavies

答えて

2

あなたは、ポーリングモデルからパブリッシュ/サブスクライブモデル(ポーリングよりチャット/フィードを実行する方がはるかに良い方法です)に移行することを説明しています。 2つの可能なリソースはこの記事Publish/Subscribe design pattern implementation in C#とこの前のスタックオーバーフローに関する質問です。Pub/Sub architectureです。

1

私はあなたのアプリケーションを実装するさまざまな方法についてコメントしておらず、あなたが質問した質問に集中することに集中します。Query Notificationsを使用してこれを達成できます。これらを使用して多くのことを行うことができますが、基本的な前提は、これを設定すると、SQLサーバーに関心のあるクエリを与え、結果が変わったときにアプリケーションに通知するということです。

妥当なチュートリアルがあります(このコードはVB.NETにありますが、それほど大きな変更はありません)here

関連する問題