Требование заказчика заключалось в том, чтобы иметь возможность видеть обновленные данные на экране всякий раз, когда происходят какие-либо изменения в конкретной таблице базы данных.
У нас есть таблица Job в БД, содержимое которой отображается в GridView в браузере. Требование состоит в том, чтобы обновлять данные сетки всякий раз, когда в таблице Jobs происходит какое-либо обновление, удаление или вставка.
Для реализации этого мы использовали зависимости от SQL и методы длительного опроса. Зависимость SQL будет уведомлять asp.net о любых изменениях в БД, а длительный опрос будет поддерживать асинхронное обновление сетки.
Мы развернули это в IIS 7.0 и заметили непоследовательное поведение, то есть представление сетки обновляется большую часть времени, скажем, 90-95%, но бывают случаи, когда обновление не происходит, хотя данные в таблице БД изменились.
Кто-нибудь сталкивался с этой проблемой? Требуется ли для этого какая-либо конкретная конфигурация в IIS? Я читал в нескольких местах, что IIS не масштабируется для кометного программирования. Приведенный выше сценарий происходит в тестовой среде только с одним пользователем. Любая помощь будет принята с благодарностью. Заранее спасибо.
Изменить: проблема, по-видимому, возникает и на сервере разработки ASP.Net, а не изолирована от IIS. После регистрации сообщений мы обнаружили, что SQLDependency — это то, что ломается, поскольку событие OnChange не запускается последовательно.
Редактировать 2: когда я запускаю запрос select * from sys.dm_qn_subscriptions
, я получаю несколько строк для одной и той же подписки на уведомления, т. е. повторяющиеся подписки. Отличается только столбец id. Может ли это быть причиной? Если да, то почему я получаю повторяющиеся строки подписки? Как я могу убить подписку из ASP.NET?
SqlDependency
? или это был длинный опрос? Без этого знания это невозможный вопрос. Лично я бы больше склонялся к веб-сокетам и redis-pub/sub здесь... но я думаю, это зависит от ваших требований к масштабированию. - person Marc Gravell   schedule 28.08.2012