Я хочу выполнить код в C # всякий раз, когда новая строка вставляется в базу данных - PullRequest
2 голосов
/ 05 августа 2011

Я работаю над приложением чата, в котором сообщение чата от одного клиента попадает в базу данных, а другие клиенты опрашивают каждые 5 секунд (используя таймер), есть ли новое сообщение или нет, если да, сообщения извлекаютсяи отображается.Но это создает проблему, когда один пользователь работает медленнее, а другой - очень быстро.Я хочу разработать механизм, в котором метод выполняется только тогда, когда в базу данных вставляется новая строка, чтобы необходимость в опросе не оставалась.Пользователи будут получать сообщения только тогда, когда новое клиентское сообщение будет добавлено в базу данных любым из клиентов, в противном случае все останутся бездействующими.Любая помощь будет высоко оценен.Я использую asp.net и C #.

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

То, что вы описываете, переходит от модели опроса к модели публикации / подписки (что, как вы можете оценить, является гораздо лучшим способом делать чаты / каналы, чем опрос). Два возможных ресурса - это статья Реализация шаблона проектирования публикации / подписки в C # и этот предыдущий вопрос о переполнении стека о Архитектура Pub / Sub .

1 голос
/ 05 августа 2011

Я не буду комментировать различные способы реализации вашего приложения и сосредоточусь на ответе на заданный вами вопрос - вы можете сделать это, используя Уведомления о запросах . С этим можно многое сделать, но основная предпосылка состоит в том, что после того, как вы это настроите, вы дадите SQL-серверу интересующий вас запрос, и он уведомит ваше приложение об изменении результатов.

Есть разумное руководство (код находится на VB.NET, но он не сильно меняется) здесь .

...