Часто задаваемые вопросы о службах Notification Services

Корпорация Майкрософт составила следующий список вопросов, часто задаваемых пользователями служб Microsoft Notification Services.

Вопросы и ответы

Каковы различия между службами Notification Services и агентом SQL Server?

Агент SQL Server был создан специально для отправки сообщений администраторам SQL Server или для выполнения предварительно определенных задач, зависящих от состояния сервера или базы данных.

В отличие от него службы Notification Services собирают данные практически из любых источников, проверяют, соответствуют ли события подпискам, определенным множеством пользователей, и отправляют форматированные сообщения на любые устройства, используя любые протоколы.

Несмотря на то что агент SQL Server можно настроить на отправку сообщений нескольким пользователям с использованием триггеров, агент SQL Server не предназначен для масштабирования количества пользователей до нескольких тысяч или миллионов. Службы Notification Services могут масштабироваться до уровня в несколько миллионов пользователей, отправляя миллионы уведомлений в сутки.

Помимо этого платформа служб Notification Services предоставляет возможности, сокращающие время, необходимое для подготовки и запуска приложения. Агент SQL Server не является платформой разработки, поэтому он не предоставляет подобных возможностей.

Дополнительные сведения о службах Notification Services см. в разделе Введение в службы SQL Server Notification Services.

Можно ли запускать несколько приложений уведомлений на одном сервере?

Да. Пользователь развертывает экземпляры служб Notification Services. В каждом экземпляре может размещаться одно или несколько приложений. На одном сервере можно запускать несколько экземпляров. Также на одном сервере можно запускать несколько версий служб Notification Services.

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

Дополнительные сведения см. в разделе Проектирование системы для служб Notification Services.

Сколько времени занимает создание уведомления из события?

Во-первых, не все подписки запускаются событиями. Некоторые из подписок задают расписание для уведомлений. В этом случае уведомления отправляются в соответствии с определенным расписанием, а не после получения события.

Для уведомлений, запускаемых событиями, задержка между возникновением события и доставкой уведомления значительным образом зависит от структуры приложения. Причины задержки уведомлений:

  • События должны отправляться службам Notification Services. Время между возникновением события и отправкой этого события поставщиком событий в пакете событий является одной из причин задержки.
  • Генератор работает по расписанию, определенному значением свойства QuantumDuration генератора. Если длительность такта составляет 60 секунд, то может возникать 60-секундная задержка перед использованием пакета событий для создания уведомлений.
  • Генератор должен обеспечить соответствие событий подпискам, чтобы создать уведомления. Обеспечение этого соответствия выполняется одним или несколькими запросами Transact-SQL. Производительность этих запросов определяет задержку при создании уведомлений. Таким образом, чем больше событий и подписок обрабатываются одновременно, тем дольше длится этот процесс. Оптимизированные правила и правильно выбранные индексы могут уменьшить задержку при обеспечении соответствия.
  • Распространитель работает по расписанию, определенному значением свойства QuantumDuration распространителя. Как и в случае с генератором, если длительность такта составляет 60 секунд, то может возникать 60-секундная задержка перед обработкой пакета уведомлений распространителем.
  • Распространитель должен отформатировать уведомления и упаковать их для доставки. Форматирование выполняется объектом модуля форматирования данных. Сложное форматирование может занять больше времени, чем простое, а отправка отформатированного уведомления службе доставки также занимает некоторое время. Например, размещение уведомления на сервере HTTP может занять до 30 секунд.

После того как распространитель отправляет уведомление службе доставки, например SMTP-серверу, службы Notification Services больше не воздействуют на задержку отправки уведомлений.

Необходимо ли устанавливать Microsoft Visual Studio 2005 для разработки приложений служб Notification Services?

Нет, Microsoft Visual Studio не требуется, хотя может облегчить разработку приложений.

При разработке приложения, использующего стандартные поставщики событий и модули форматирования данных, можно построить это приложение, создав XML-файл определения приложения (ADF-файл), а затем определив экземпляр для размещения приложения, создав XML-файл конфигурации экземпляра (ICF-файл). Эти XML-файлы можно создать с использованием любого текстового или XML-редактора.

При необходимости построения приложения с использованием управляющих объектов служб Notification Services или при построении интерфейсов управления подписками, собственных поставщиков событий или модулей форматирования данных можно использовать среду разработки Visual Studio для создания этих объектов. Однако использование Visual Studio не является обязательным. Для написания кода можно использовать любой текстовый редактор. Необходимо установить пакет SDK платформы Microsoft .NET и скомпилировать код.

Каковы сравнительные преимущества внутрипроцессных и внепроцессных поставщиков событий?

Реализация внутрипроцессного поставщика событий обычно означает меньшие трудозатраты на разработку, поскольку экземпляр служб Notification Services загружает API-интерфейс служб Notification Services и поддерживает расписание, используемое для активации этого поставщика событий. Также внутрипроцессные поставщики событий могут включаться и отключаться подобно другим компонентам и службам Notification Services.

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

У меня уже есть приложение управления подпиской, написанное на неуправляемом коде. Можно ли вызывать из моего приложения ваш API-интерфейс?

Службы Notification Services поддерживают взаимодействие COM для простых подписок. Однако с использованием взаимодействия COM нельзя создавать подписки, основанные на условиях, поскольку классы в пространстве имен Microsoft.SqlServer.NotificationServices.Rules не поддерживают взаимодействие COM.

Дополнительные сведения см. в разделе Взаимодействие COM со службами Notification Services.

См. также

Задачи

Разрешение общих проблем служб Notification Services
Настройка ведения журнала событий служб Notification Services
Использование сообщений о событиях

Справка и поддержка

Получение помощи по SQL Server 2005