Разработка пользовательского модуля форматирования данных

Службы Notification Services предоставляют встроенный модуль форматирования данных на основе XSLT (расширяемого языка преобразования стилей) для быстрой разработки приложений. Однако при необходимости форматирования данных уведомлений с использованием других технологий нужно разработать собственный модуль форматирования данных.

Интерфейс IContentFormatter

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

Чтобы разработать собственный модуль форматирования данных, необходимо разработать класс, реализующий интерфейс IContentFormatter. Этот интерфейс доступен в пространстве имен Microsoft.SqlServer.NotificationServices.

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

Распространитель вначале вызывает метод Initialize, затем — метод FormatContent для каждого сообщения, подлежащего форматированию, и по окончании работы вызывает метод Close. Метод FormatContent не вызывается повторно, если метод Initialize не был вызван ранее.

При сбое форматирования метод FormatContent может вызвать исключение. Распространитель записывает исключение в журнал приложений и помечает уведомление как вызвавшее сбой. Уведомление, вызвавшее сбой, не отправляется протоколу доставки. Если класс уведомления настроен на повторные попытки отправки уведомления, то уведомление будет выбрано для форматирования в следующем интервале повторных попыток.

Методы Initialize и Close никогда не должны выдавать исключения.

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

Форматирование уведомлений

Когда распространитель инициализирует модуль форматирования данных, вызывая метод Initialize, он передает все заявленные аргументы и настройку доставки сборника. Реализация модуля форматирования данных должна использовать эти значения для самонастройки и сохранить все настройки, которые она будет использовать. Когда распространитель запускает модуль форматирования данных для форматирования сообщения уведомления, он вызывает метод FormatContent и передает массив хэш-таблиц, содержащих данные уведомления, модулю форматирования данных. Данные уведомления включают языковой стандарт и тип устройства подписчика.

В зависимости от приложения для реализации модуля форматирования данных может потребоваться форматирование сборников уведомлений, нескольких устройств или нескольких языковых стандартов.

Использование пользовательского модуля форматирования данных

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

ms166410.note(ru-ru,SQL.90).gifВажно!
Пользовательский модуль форматирования данных запускается с теми же правами доступа, что и распространитель, запускаемый ядром служб Notification Services. Учетная запись, под которой запускается ядро служб Notification Services, должна иметь разрешение для доступа к сборке.

См. также

Основные понятия

Вопросы безопасности служб Notification Services

Другие ресурсы

Модуль форматирования данных XSLT
Разработка пользовательских компонентов служб Notification Services

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

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