Опубликован: 29.07.2008 | Доступ: свободный | Студентов: 1170 / 115 | Оценка: 4.49 / 4.15 | Длительность: 17:53:00
Лекция 9:

Введение в службы Notification Services

< Лекция 8 || Лекция 9: 1234567

Добавление подписчиков, устройств и подписок в приложение

В реальном мире мы использовали бы приложение для сбора необходимой информации о подписчиках, выбранных ими устройствах и подписках, которые им интересны. Характер приложения для управления подпиской может быть различным. Можно написать интерфейс, предназначенный специально для процесса управления подписками. В других случаях подписки создаются в результате действий какого-либо другого приложения. Например, если вы создаете решение для обработки информации о клиентах и заказов на книги через интернет, то при установке флажка "Я интересуюсь другими книгами этого автора" в фоновом режиме должна быть сформирована подписка.

Дополнительная информация Дополнительную информацию о процессе подписки можно найти в теме "Разработка интерфейсов управления подпиской".

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

Добавляем подписчиков и подписки
  1. Через Проводник Windows скопируйте из папки My Documents\MicrosoftPress\SQLAppliedTechSBS\Chapter13 в папку, в которой вы сохраняете проект, следующие файлы:
    • AddSubscribers.vbs
    • AddSubscriptions.vbs
    • ViewSubscribersAndDevices.sql
    • ViewSubscriptions.sql
  2. В SQL Server Management Studio щелкните правой кнопкой мыши SQL2005StepByStep в окне Solution Explorer (Обозреватель решений). Выберите из контекстного меню команды Add, Existing Item (Добавить, Существующий элемент). Добавьте перечисленные выше четыре файла в проект. Файлы .vbs будут помещены в папку Miscellaneous, а файлы .sql - в папку Queries.
  3. Откройте файл AddSubscribers.vbs для просмотра, выполнив на нем двойной щелчок в окне Solution Explorer (Обозревателя решений).
  4. В окне Visual Studio IDE невозможно запустить файл сценария VBScript. Поэтому вернитесь в окно Windows Explorer (Проводника Windows), выделите файл AddSubscribers.vbs, щелкните его правой кнопкой мыши и выберите из контекстного меню команду Open (Открыть). Сценарий будет запущен. После того, как он завершит свою работу, откроется окно сообщений, показанное на следующем рисунке.

  5. Если что-либо пойдет не так, то на экран будет выведено диалоговое окно ошибки, аналогичное окну, показанному на следующем рисунке. Исправьте ошибку и еще раз запустите сценарий.

  6. Повторите действие 4 для файла AddSubscriptions.vbs.
  7. Вернитесь в окно SQL Server Management Studio, откройте файл запроса ViewSubscribersAndDevices.sql и запустите его. Если в окне результатов отображаются сведения о подписчиках, то сценарий работает правильно. Обратите внимание, что запрос обращен к представлению, а не к таблице.
  8. Откройте файл запроса ViewSubscriptions.sql и выполните его. Если в окне результатов отображаются сведения о подписке, то сценарий работает правильно.

Передача событий приложению

Обычно для передачи событий приложению используется один из стандартных поставщиков событий. Вы можете передавать события через модель объекта Event (API объекта событий), упакованными в XML-файлы (XML API), или через предоставляемые хранимые процедуры (API SQL Server).

Дополнительная информация Дополнительную информацию о событиях можно найти в теме "Определение поставщиков событий" Электронной документации по SQL Server 2005.

В нашем примере мы воспользуемся двумя простыми сценариями SQL, которые используют хранимые процедуры API SQL Server.

  1. Через Проводник Windows скопируйте из папки My Documents\MicrosoftPress\SQLAppliedTechSBS\Chapter13 в папку, в которой вы сохраняете проект, следующие файлы:
    • AddSightEvents.sql
    • ViewSightEvents.sql

  2. В SQL Server Management Studio щелкните правой кнопкой мыши SQL2005StepByStep в окне Solution Explorer (Обозреватель решений). Выберите из контекстного меню команды Add, Existing Item (Добавить, Существующий элемент). Добавьте эти два файла в проект. Они будут помещены в папку Queries.
  3. Откройте файл AddSightEvents.sql для просмотра, выполнив на нем двойной щелчок в окне Solution Explorer (Обозревателя решений). Обратите внимание на то, что события были добавлены при помощи двух хранимых процедур с именами NSEventBeginBatchSightData и NSEventWriteSightData. Первая хранимая процедура запускает пакет событий, а вторая добавляет определенные события. Когда пакет событий завершается, сценарий выполняет хранимую процедуру NSEventFlushBatchSightData, чтобы сообщить службам Notification Services о том, что пакет готов для обработки. Службы Notification Services обрабатывают события пакетом для повышения производительности. Если вы не можете передать пакет, то службы Notification Services могут запуститься, когда события все еще передаются приложению, тем самым снижается эффективность широковещательной рассылки уведомлений и набора функций.
  4. Выполните сценарий: Он возвратит идентификатор пакета событий EventBatchID и количество событий, полученных приложением. Запишите идентификатор EventBatchID, он понадобится в следующем действии. Если вы в первый раз выполняете этот сценарий, идентификатор EventBatchID будет иметь значение 1. При каждом последующем выполнении значение идентификатора EventBatchID будет увеличиваться.
  5. Чтобы проверить события в системе, откройте сценарий ViewSightEvents. Просмотрите его и измените значение параметра @EventBatchId так, чтобы оно соответствовало идентификатору EventBatchId, который был возвращен в предыдущем действии.
  6. Выполните сценарий: Он возвратит сведения об EventBatch и информацию о событии.
Определение подписчиков, которым следует отправить уведомления

Пока мы наблюдали за событиями, система проверила, существует ли событие, и запустила генерацию уведомления. Службы Notification Services периодически проверяют наличие новых событий и выполняют правило события, которое содержится в ADF-файле, в классе подписки. Правило события выполняет вставку записи в таблицу уведомлений. В данном примере таблица уведомлений - это таблица SightAlerts. Мы видим, что имя таблицы уведомлений совпадает с именем класса уведомлений, определенного в ADF.

Можно проверить, какие уведомления предположительно будут переданы, выполнив следующие действия.

Проверяем уведомления

  1. Через Проводник Windows скопируйте из папки My Documents\MicrosoftPress\SQLAppliedTechSBS\Chapter13 в папку, в которой вы сохраняете проект, следующий файл:
    • ViewNotifications.sql
  2. В SQL Server Management Studio щелкните правой кнопкой мыши SQL2005StepByStep в окне Solution Explorer (Обозреватель решений). Выберите из контекстного меню команды Add, Existing Item (Добавить, Существующий элемент). Добавьте этот файл в проект. Файл будет помещен в папку Queries.
  3. Откройте и запустите сценарий ViewNotifications.sql. В панели Results (Результаты) отобразится состояние уведомлений.
    Предупреждение. Распространитель (описанный в следующем разделе) выполняется по собственному расписанию, следовательно, на отображение результатов может потребоваться некоторое время. Возвращайтесь к запросу каждые несколько секунд, пока он не возвратит успешное или неудачное состояние доставки для каждого уведомления в очереди.
Компоновка сообщения уведомления

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

Окончательная форма уведомления формулируется в ADF/ICF. Как мы видели при создании файла ADF, в конце определения класса уведомлений объявляется соответствующий модуль форматирования содержимого. Атрибуты модуля форматирования содержимого определяют имя модуля форматирования и обязательные аргументы. Модуль форматирования XsltFormatter - это один из стандартных модулей, который, кроме указания трех аргументов, о которых рассказывается далее в этом разделе, не требует настройки. Другие модули форматирования требуют полного уточненного имени и дополнительной информации, которая позволяет службам Notification Services найти и использовать их.

Стандартный модуль форматирования XsltFormatter использует три аргумента:

  • Каталог размещения файлов XSLT. Он соответствует аргументу XsltBaseDirectoryPath.
  • Действующее имя применяемого файла XSLT. Оно соответствует аргументу XsltFileName.
  • По желанию можно указать модулю форматирования содержимого, что данные, содержащиеся в таблице уведомлений, уже имеют формат XML или HTML и не нуждаются в дальнейшей кодировке содержимого. Вы можете воспользоваться этой функцией, указав аргумент DisableEscaping. Значение по умолчанию для этого аргумента равно false.
Дополнительная информация Дополнительную информацию о модулях форматирования содержимого можно найти в теме "Настройка модулей форматирования данных" в Электронной документации по SQL Server 2005.

В нашем примере аргументы, перечисленные выше, соответствуют переменной _AppPath_ для пути к основному каталогу и файлу BirdingTransform.xslt для имени файла XSLT.

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

Просмотрев файл ICF, найдите элемент DeliveryChannel в конце файла. Этот элемент включает элемент ProtocolName, аргумент которого указывает на файл HTML в папке Notifications, которую мы создали в начале этой лекции.

Итак, Распространитель проверяет представления таблицы уведомлений. Здесь он находит информацию об идентификаторе подписчика ( SubscriberID ), канале доставки ( DeliveryChannel ), языковому стандарту подписчика ( SubscriberLocale ), имени устройства ( DeviceName ) и адресе устройства ( DeviceAddress ). С помощью этой информации он может вызвать модуль форматирования, чтобы сформировать "сообщения" уведомлений и скомпоновать вывод для доставки.

Доставка уведомлений

Если в качестве канала доставки используется файл, то процесс завершается после того, как файл будет сгенерирован, дальнейшее распространение не требуется.

Вы можете проверить результаты нашего примера, просмотрев их в папке Notification, которую мы создали в папке проекта при настройке инфраструктуры. Здесь вы найдете файл с именем SightNotifications.htm, который должен содержать форматированное уведомление в виде строки.

Предупреждение. Если файл SightNotifications.htm окажется пустым, убедитесь, что файл BirdingTransform.xslt находится в каталоге проекта в соответствии с инструкциями, которые были даны ранее в этой лекции.

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

Заключение

В этой лекции рассказывалось об основах настройки и использования приложений уведомлений при помощи компонента SQL Server 2005 Службы Notification Services.

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

SQL Server – мощная платформа для установки базы данных, которая не только предоставляет базовые функции хранения и извлечения данных. Мы наблюдали, как SQL Server 2005 обеспечивает безопасность, защиту, передачу и сводные данные. Мы также видели, как SQL Server организует и хранит данные, при этом у читателя сложилось определенное понимание принципов оптимизации извлечения данных путем изменения внутренней структуры хранения. Вы научились использовать удаленные источники данных, осуществлять доступ к SQL Server через интернет, а также разрешать пользователям безопасно создавать свои запросы через интерфейс созданных вами приложений. Вы узнали, как использовать транзакции для защиты пользовательских данных и как хранить архивные данные, чтобы можно было выполнить откат отдельных транзакций. Кроме того, теперь вы знаете, как использовать эффективные инструменты SQL Server 2005 для работы с отчетами и уведомлениями. То есть, у вас теперь есть все, что нужно для того, чтобы начать более эффективно использовать установку SQL Server 2005 - это немного практики и вся необходимая информация, которую вы легко найдете в этой книге.

Краткий справочник по 9 лекции

Чтобы Выполните следующие действия
Создать новый проект для служб Notification Services Создайте специальную базу данных приложения, затем в SQL Server Management Studio выберите из меню File (Файл) команды New, Project (Создать, Проект) и далее выберите в качестве шаблона проекта SQL Server Scripts (Сценарии SQL Server). Добавьте файлы ADF и ICF.
Создать основу приложения служб Notification Services Определите классы событий, подписок, уведомлений и поставщиков.
Развернуть приложение служб Notification Services Создайте, зарегистрируйте, включите и запустите экземпляр служб Notification Services.
Создать экземпляр служб Notification Services В Object Explorer (Обозревателе объектов) в SQL Server Management Studio щелкните правой кнопкой мыши узел Службы Notification Services и выберите из контекстного меню New Notification Services Instance (Новый экземпляр служб Notification Services).
Зарегистрировать экземпляр служб Notification Services В Object Explorer (Обозревателе объектов) в SQL Server Management Studio разверните узел Службы Notification Services, щелкните правой кнопкой мыши экземпляр и выберите из контекстного меню команды Task, Register (Задачи, Зарегистрировать).
Включить экземпляр служб Notification Services В Object Explorer (Обозревателе объектов) в SQL Server Management Studio разверните узел Службы Notification Services, щелкните правой кнопкой мыши экземпляр и выберите из контекстного меню команду Enable (Включить). Запустить экземпляр В Object Explorer (Обозревателе объектов) в SQL служб Notification Server Management Studio разверните узел Services Службы Notification Services, щелкните правой кнопкой мыши экземпляр и выберите из контекстного меню команду Start (Запустить).
Обновить экземпляр служб Notification Services Остановите и отключите экземпляр; затем в Object Explorer (Обозревателе объектов) в SQL Server Management Studio разверните узел Службы Notification Services, щелкните правой кнопкой мыши экземпляр и выберите из контекстного меню команду Update (Обновить).
< Лекция 8 || Лекция 9: 1234567
Гаральд Егоркин
Гаральд Егоркин
Россия
Павел Шелякин
Павел Шелякин
Россия