Уведомление о запросе будет нажимать на службу Service Broker, а не непосредственно на ваше приложение. См. «Таинственное оповещение» , чтобы понять, как это работает. Ваше приложение ожидает уведомлений, отправив в базу данных инструкцию WAITFOR(RECEIVE)
. Это означает, что каждый из 100 клиентов занимает один рабочий поток SQL Server (которые ограничены, см. Параметр max worker threads
). Я видел, что это работает на производстве с +1000 клиентами (после того, как вы набрали опцию максимального рабочего потока), но я бы посоветовал против .
Моя рекомендация состояла бы в том, чтобы один мониторинг службы для изменений, используя SqlDependency / QueryNotifications. Эта служба затем будет толкать уведомления, используя, например, WCF, всем вашим работающим приложениям. Вы должны подписаться на общие изменения (the table Foo was changed
), а не на конкретные (the row x in table Foo was inserted
).
Как правило, SqlDependency / Query Notifications может только сообщать вам, что данные изменились, t нажмите новые данные . Приложение должно обновить свои локальные наборы данных, выполнив запросы снова, после уведомления.