Образец FlightNmo

Изменения: 17 июля 2006 г.

Образец FlightNmo показывает, как построить образец Flight с помощью управляющих объектов служб Notification Services (объекты NMO).

Сценарий

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

Компания, выполняющая приложение FlightNmo, передает в приложение данные о ценах на авиабилеты, помещая XML-данные в отслеживаемую папку. Затем службы Notification Services собирают эти данные и формируют уведомления для соответствующих подписчиков.

Уведомления формируются, когда выполняются следующие условия:

  • В событии цена билета ниже цены билета, указанной в подписке.
  • В событии аэропорт отправления соответствует аэропорту отправления, указанному в подписке.
  • В событии аэропорт назначения соответствует аэропорту назначения, указанному в подписке.
  • В событии авиакомпания соответствует авиакомпании, указанной в подписке (если указано).

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

Языки

XML, XSD, XSLT и Microsoft Visual C# или Microsoft Visual Basic.

Возможности

Образец FlightNmo пользуется следующими функциями служб Notification Services.

Часть образца Возможности

Класс событий

Очередь основных событий (без хроники событий).

Класс подписки

Управляемые событиями подписки.

Класс уведомления

Сводная доставка.

Поставщики событий

Поставщик событий наблюдателя файловой системы.

Модули форматирования данных

Модуль форматирования данных XSLT.

Протоколы доставки

Протокол доставки файлов и протокол доставки SMTP.

Разработка экземпляра и приложения

NMO

Предварительные требования

Прежде чем запустить этот образец, убедитесь, что установлено следующее программное обеспечение.

  • SQL Server 2005, включая следующие компоненты:
    • Компонент Database Engine.
    • Ядро и клиентские компоненты служб Notification Services.
    • Среда SQL Server Management Studio.
    • Образцы служб Notification Services. Данные образцы входят в комплект SQL Server 2005. Последнюю версию образцов можно загрузить в центре разработчиков на SQL Server.
    • Пакет .NET Framework SDK 2.0 или среда Microsoft Visual Studio 2005. Пакет .NET Framework SDK можно получить бесплатно. См. раздел Установка пакета .NET Framework SDK.

Проверьте, что установлены и работоспособны следующие компоненты Windows:

  • Служба SMTP, являющаяся компонентом служб IIS. В системах Microsoft Windows Server 2003 служба SMTP по умолчанию вместе с IIS не устанавливается. См. инструкции по установке и использованию службы SMTP в документации Windows.

Убедитесь также, что запущен нужный экземпляр компонента Database Engine.

Создание файла ключа для строгого имени

Если файл ключа для строгого имени еще не создавался, создайте его следующим образом.

To generate a strong name key file

  1. Откройте командную строку Microsoft Visual Studio 2005. Нажмите кнопку Пуск, укажите пункты Все программы, Microsoft .NET Framework SDK v2.0 и выберите пункт Командная строка пакета SDK.

    -- или --

    Откройте командную строку Microsoft .NET Framework. Нажмите кнопку Пуск, укажите пункты Все программы, Microsoft .NET Framework SDK v2.0 и выберите пункт Командная строка пакета SDK.

  2. Используйте команду CD, чтобы сменить текущий каталог командной строки и перейти в каталог, в котором установлены образцы.

    ms160822.note(ru-ru,SQL.90).gifПримечание.
    Чтобы определить каталог, в котором установлены образцы, нажмите кнопку Пуск, укажите пункты Все программы, Microsoft SQL Server, Документация и учебные материалы, а затем выберите пункт Каталог образцов. Если использовался каталог установки по умолчанию, то образцы расположены в каталоге «<системный_диск>:\Program Files\Microsoft SQL Server\100\Samples».
  3. В командной строке выполните следующую команду, чтобы создать файл ключа:

    sn -k SampleKey.snk

    ms160822.note(ru-ru,SQL.90).gifВажно!
    Дополнительные сведения о паре ключей для строгого имени см. в статье по строгим именам и безопасности для платформы .NET Framework в центре разработчиков .NET в MSDN.

Построение экземпляра служб Notification Services

Для построения экземпляра необходимо выполнить следующие действия.

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

Следующие процедуры показывают, как выполнить каждую из этих задач для образца FlightNmo.

Шаг 1. Построение решения Visual Studio

  1. Сначала постройте решение Visual Studio.

    Если используется пакет Microsoft .NET Framework SDK, выполните следующее.

    1. Нажмите кнопку Пуск, выберите пункт Все программы\Microsoft .NET Framework SDK v2.0 и нажмите кнопку Командная строка пакета SDK.
    2. Найдите корневой каталог образца FlightNmo. Введите следующую команду для размещения по умолчанию:
      cd \Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo
    3. Введите следующую команду для построения решения:
      [C#] 
      msbuild FlightNmo.sln
      [Visual Basic]
      msbuild FlightNmo_VB.sln

    При использовании среды Visual Studio 2005 выполните следующее:

    1. Откройте файл решения по вашему (FlightNmo.sln или FlightNmo_VB.sln).
    2. В Visual Studio в меню Построить выберите пункт Построить решение.

Шаг 2. Создайте и зарегистрируйте экземпляр служб Notification Services

  1. В командной строке перейдите в отладочную папку проекта CreateFlightNmoInstance.

    cd CreateFlightNmoInstance\язык\CreateFlightNmoInstance\bin\Debug

  2. Чтобы создать, зарегистрировать и включить экземпляр, запустите программу CreateFlightNmoInstance.exe, как показано ниже. Аргументы SqlUserName и SqlPassword требуются только при использовании проверки подлинности SQL Server. Остальные аргументы необходимы:

    **CreateFlightNmoInstance SqlServer=databaseServerSampleDirectory=**каталог

    **NotificationServicesHost=**NotificationServicesHost

    **ServiceUserName=NSServiceUserNameServicePassword=**NSServicePwd

    **SqlUserName=NSServiceSqlUserNameSqlPassword=**NSServiceSqlPwd

    При запуске этой команды используйте следующие значения заполнителей, рассмотренных в этом подразделе ранее.

    • databaseServer — это экземпляр компонента Database Engine, на котором производится создание баз данных экземпляра и приложений.
    • Каталог — каталог установки образцов. Место по умолчанию — «C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo».
    • NotificationServicesHost — сервер, на котором запущены компоненты служб Notification Services. В этом образце следует использовать локальный компьютер.
    • NSServiceUserName — учетная запись, от которой запущена служба Windows NS$FlightNmoInstance.
    • NSServicePwd — пароль для учетной записи NSServiceUserName.
    • Аргументы NSServiceSqlUserName и NSServiceSqlPwd указываются только при использовании проверки подлинности SQL Server. Если эти аргументы заданы, служба Windows будет их использовать при подключении к ядру СУБД.

    После завершения команды у вас будут две новые базы данных и служба Windows. Базы данных называются FlightNmoInstanceNSMain и FlightNmoInstanceFlightNmo. Служба Windows называется NS$FlightNmoInstance.

ms160822.note(ru-ru,SQL.90).gifПримечание.
Если образец служб Notification Services развертывается при помощи учетной записи, принадлежащей владельцу базы данных или системному администратору, разрешения SQL Server на учетную запись предоставлять не нужно. Предоставление этих разрешений завершится ошибкой, на которую можно не обращать внимания. Для обеспечения безопасности при развертывании приложений необходимо использовать учетные записи с наименьшими правами доступа.

Шаг 3. Предоставьте разрешения на SQL Server и базу данных

  1. Откройте среду SQL Server Management Studio и подключитесь к экземпляру ядра СУБД, указанному ранее в этом подразделе аргументом SqlServer.

  2. В обозревателе объектов разверните узел Безопасность.

  3. При необходимости создайте новое имя учетной записи базы данных для службы Windows, щелкните правой кнопкой мыши Имена входа, выберите Создать имя входа и создайте его:

    • Для использования проверки подлинности Windows выберите Проверка подлинности Windows и введите учетную запись Windows, которая указывалась в качестве аргумента ServiceUserName ранее в этом подразделе.
    • Для использования проверки подлинности SQL Server выберите Проверки подлинности SQL Server и введите значения, заданные ранее в этом подразделе для аргументов SqlUserName и SqlPassword.
  4. Если имя входа, используемое службой Windows, уже имеет доступ к SQL Server, щелкните его правой кнопкой мыши и выберите пункт Свойства.

  5. В левой области диалогового окна Имя входа выберите пункт Сопоставление пользователей.

  6. Предоставьте разрешения на доступ к базе данных FlightNmoInstanceNSMain:

    1. В поле Пользователи, сопоставленные с этим именем входа выберите FlightNmoInstanceNSMain.
    2. В поле Членство в роли базы данных для: FlightNmoInstanceNSMain выберите NSRunService.
  7. Предоставьте разрешения на доступ к базе данных FlightNmoInstanceFlightNmo:

    1. В поле Пользователи, сопоставленные с этим именем входа выберите FlightNmoInstanceFlightNmo.
    2. В поле Членство в роли базы данных для: FlightNmoInstanceFlightNmo выберите NSRunService.
  8. Нажмите кнопку ОК, чтобы применить разрешения SQL Server.

  9. При помощи проводника Windows настройте безопасность для папки Events:

    1. Найдите папку Events образца.
    2. Щелкните правой кнопкой мыши папку Events, выберите пункт Общий доступ и безопасность и перейдите на вкладку Безопасность.
    3. Нажмите кнопку Добавить и добавьте учетную запись, используемую службой Windows.
    4. В окне Имена групп или пользователей выберите только что добавленную учетную запись.
    5. В поле Разрешения выберите разрешения Чтение и Изменение.
    6. Нажмите кнопку ОК, чтобы применить изменения.
  10. Настройте безопасность для папки Notifications:

    1. Найдите папку Notifications образца.
    2. Щелкните правой кнопкой мыши папку Notifications, выберите пункт Общий доступ и безопасность, затем выберите вкладку Безопасность.
    3. Нажмите кнопку Добавить и добавьте учетную запись, используемую службой Windows.
    4. В окне Имена групп или пользователей выберите только что добавленную учетную запись.
    5. В поле Разрешения выберите Запись.
    6. Нажмите кнопку ОК, чтобы применить изменения.

Выполнение образца

Чтобы запустить образец, выполните следующее:

  • Запустите экземпляр.
  • Добавьте подписчиков и подписки.
  • Удалите XML-файл, содержащий события.
  • Просмотрите итоговые уведомления.

Следующие процедуры демонстрируют выполнение этих задач.

Шаг 1. Запустите экземпляр

  1. В обозревателе объектов откройте папку служб Notification Services.

  2. Щелкните правой кнопкой мыши FlightNmoInstance и выберите пункт Пуск.

Шаг 2. Добавьте подписчиков и подписки

  1. Запустите файл AddSubscribers.exe.

    По умолчанию он находится в папке «C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo\AddSubscribers\язык\AddSubscribers\bin\Debug».

  2. Запустите файл AddSubscriptions.exe.

    По умолчанию он находится в папке «C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo\AddSubscriptions\язык\AddSubscriptions\bin\Debug».

ms160822.note(ru-ru,SQL.90).gifПримечание.
Для приложений рабочей среды или при выполнении приложения от учетной записи с ограниченными правами доступа в базах данных экземпляра и приложения добавьте имя входа SQL Server для приложения к роли базы данных NSSubscriberAdmin.

Шаг 3. Отправьте события

  1. В проводнике Windows найдите корневой каталог образца FlightNmo и скопируйте файл EventData.xml в подпапку Events.

    При удалении файла поставщик событий наблюдателя за файловой системой считывает данные из файла, отправляет их приложению и затем изменяет расширение файла на «done».

    Если в процессе чтения или отправки данных происходит ошибка, поставщик событий изменяет расширение файла на ERR. Дополнительные сведения о данной ошибке см. в обозревателе событий Windows.

Шаг 4. Просмотрите уведомления

  1. Службам Notification Services понадобится около одной минуты для создания уведомлений.

  2. С помощью проводника Windows найдите папку Notifications образца FlightNmo. Необходимо найти файл с именем FileNotifications.txt. Данный файл содержит уведомления на основе файлов.

  3. Перейдите к папке, в которую помещаются сообщения электронной почты. Обычно это одна из папок в каталоге «C:\Inetpub\mailroot». В зависимости от состояния SMTP-сервера уведомления должны находиться в папке Pickup или в папке Queue. Если служба SMTP запущена, то сообщения могут быть перемещены в папку Badmail.

Удаление образца

Для удаления образца FlightNmo выполните следующие действия.

Удаление образца FlightNmo

  1. В обозревателе объектов среды SQL Server Management Studio откройте папку служб Notification Services.

  2. Щелкните правой кнопкой мыши FlightNmoInstance и выберите Остановить.

  3. Правой кнопкой мыши щелкните пункт FlightNmoInstance, выберите Задачи, затем выберите Отменить регистрацию.

  4. Правой кнопкой мыши щелкните пункт FlightNmoInstance, выберите Задачи, затем выберите Удалить.

См. также

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

Образцы служб SQL Server Notification Services
Обеспечение безопасности служб Notification Services

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

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

Журнал изменений

Версия Журнал

14 апреля 2006 г.

Добавленное содержимое
  • Добавлены сведения о запуске образцов с разрешениями владельца базы данных.

5 декабря 2005 г.

Измененное содержимое
  • Изменены инструкции по созданию файла ключа, в том числе его имя и расположение.