Проверьте базу данных на наличие изменений с помощью длительного опроса - PullRequest
3 голосов
/ 29 декабря 2011

Я создаю чат-приложение в ASP.NET MVC3.Я использую длинные опросы и AsyncController, чтобы сделать это

, когда пользователь публикует чат, сохраненный в базе данных, для извлечения, должен ли я постоянно проверять базу данных на предмет изменений в записи или по истечении определенного интервала, или есть лучший / эффективный способделая это

я наткнулся на этот вопрос , но не смог получить полезный ответ.

Ответы [ 3 ]

4 голосов
/ 29 декабря 2011

Вы можете взглянуть на SignalR для более эффективного способа. В отличие от стандартного механизма опроса (в котором вы отправляете запросы через регулярные промежутки времени для проверки изменений), SignalR использует механизм push-уведомлений, в котором сервер отправляет уведомления подключенным клиентам, чтобы уведомить их об изменениях.

0 голосов
/ 30 декабря 2011

Вы можете попробовать PServiceBus (http://pservicebus.codeplex.com/)), и вот пример приложения для веб-чата (http://74.208.226.12/ChatApp/chat.html) работает и не нуждается в базе данных между ними для передачи сообщений между двумя веб-клиентами. Если вы хотите сохранить данные в базе данныхради регистрации вы всегда можете подписаться на сообщение чата и записать его в базу данных.

0 голосов
/ 30 декабря 2011

Поскольку вы уже используете длинные опросы и асинхронный контроллер, почему бы не создать пул сообщений?Взгляните на это решение .

В двух словах, вместо того, чтобы просто записывать обновленный чат в базу данных, вы также должны поместить его в какую-то очередь.Затем асинхронный поток каждого пользователя прослушивает этот пул, ожидая появления сообщения.Когда он появится, верните данные пользователю в обычном режиме.Когда все прослушивающие потоки получили сообщение, оно может быть удалено из очереди.Это предотвратит несколько потоков, забивающих вашу базу данных в поисках нового сообщения.

...