Поделиться через


Образец Stock

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

Образец Stock — приложение служб Microsoft SQL Server 2005 Notification Services, которое использует управляемые событиями подписки и подписки по расписанию для создания уведомлений, основанных на данных фондового рынка. Пользователи-подписчики получают уведомления, если цена акции выходит за пределы определенного триггерного значения.

Образец также показывает, как разместить ядро служб Notification Services в определенном приложении вместо использования службы Microsoft Windows, созданной службами Notification Services.

Сценарий

Инвесторы подписываются на получение уведомлений о курсах акций. Каждая подписка указывает символ акции и является либо событийно-управляемой, либо плановой.

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

  • Символ акции в событии совпадает с символом акции в подписке.
  • Новая цена акции выше триггерного значения подписки.
  • Предыдущее значение высокой цены акции, записанное в хронике биржевых событий, ниже триггерного значения подписки. Эти условия гарантируют, что подписчик не получит множество уведомлений для одной и той же акции.

Если новая цена акции выше записанной в хронике или символ акции не существует в хронике, службы Notification Services обновляют хронику.

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

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

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

Языки

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

Возможности

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

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

Один класс событий и одна хроника событий.

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

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

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

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

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

Один поставщик событий наблюдателя файловой системы и один пользовательский внепроцессный поставщик событий.

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

XSLT-модуль форматирования данных служб Notification Services. Каждый класс уведомления указывает свой собственный файл XSLT для модуля форматирования данных.

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

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

Ядро служб Notification Services

Размещено в консольном приложении.

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

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

  • 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.

Построение решения

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

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, чтобы сменить текущий каталог командной строки и перейти в каталог, в котором установлены образцы.

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

    sn -k SampleKey.snk

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

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

Построение решения Visual Studio

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

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

    1. Откройте файл приложения по своему усмотрению (Stock.sln или Stock_VB.sln).
    2. Постройте решение.

Развертывание экземпляра служб Notification Services

Чтобы развернуть экземпляр служб Notification Services, выполните следующее.

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

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

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

  1. Откройте среду SQL Server Management Studio и подключитесь к экземпляру SQL Server.

  2. В обозревателе объектов щелкните правой кнопкой мыши папку служб Notification Services, а затем выберите Создать экземпляр служб Notification Services.

  3. В диалоговом окне Создание экземпляра служб Notification Services щелкните Обзор и в корневой папке образца Stock выберите файл InstanceConfig.xml.

  4. В окне Параметры введите значения для трех параметров.

    • SampleDirectory представляет собой путь к корневой папке образца Stock. Путь по умолчанию — «C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\Stock».
    • NotificationServicesHost — это имя локального сервера.
    • SQLServer — имя экземпляра SQL Server.
  5. Установите флажок Включить экземпляр после его создания.

  6. Нажмите кнопку ОК.

  7. После того, как службы Notification Services закончат создание экземпляра, нажмите кнопку Закрыть.

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

  1. В среде SQL Server Management Studio откройте узел служб Notification Services, щелкните правой кнопкой мыши экземпляр StockInstance, выберите пункт Задачи, затем выберите Зарегистрировать.

    Не выбирайте никаких параметров. Ядро будет размещено в определенном приложении, поэтому не нужно создавать службу Windows.

  2. Нажмите кнопку ОК.

  3. После того, как службы Notification Services закончат регистрацию экземпляра, нажмите кнопку Закрыть.

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

Шаг 3. Предоставьте разрешения на SQL Server, Windows и папки

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

  2. Если необходимо создать новое имя входа в базу данных, щелкните правой кнопкой пункт Имена входа, выберите Создать имя входа и создайте учетную запись для имени входа.

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

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

  5. Предоставьте разрешения для базы данных StockInstanceNSMain.

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

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

  8. Настройка безопасности для папки Events.

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

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

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

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

  • запустите экземпляр;
  • добавьте подписчиков и подписки;
  • отправьте события.

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

Шаг 1. Запустите основное ядро

  1. Убедитесь в том, что учетная запись, от которой запущен соответствующий компонент Database Engine, является членом группы Windows SQLServer2005NotificationServicesUser$ИмяКомпьютера, имеющей разрешения на чтение и выполнение двоичных файлов служб Notification Services, или что ей предоставлены разрешения на чтение и запуск файлов в папке «C:\Program Files\Microsoft SQL Server\90\Notification Services».

  2. В проводнике Windows перейдите в папку HostableExecutionEngine\язык\HostableExecutionEngine\bin\Debug образца Stock.

  3. Чтобы запустить консольное приложение, в котором размещено ядро служб Notification Services, дважды щелкните файл HostableExecutionEngine.exe.

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

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

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

    EXE-файл размещен в подпапке AddSubscribers\язык\AddSubscribers\bin\Debug образца Stock.

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

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

    EXE-файл размещен в подпапке AddSubscriptions\язык\AddSubscriptions\bin\Debug образца Stock.

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

  3. Запустите файл NonHostedEventProvider.exe.

    EXE-файл размещен во вложенной папке NonHostedEventProvider\язык\NonHostedEventProvider\bin\Debug образца Stock.

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

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

Шаг 3. Отправьте события, удалив файл событий

  1. В проводнике Windows перейдите в корневую папку образца «Stock», затем скопируйте файл EventData.xml в подпапку «Events».

    ms160739.note(ru-ru,SQL.90).gifПримечание.
    Поскольку ранее события отправлялись с помощью внепроцессного поставщика событий, этот шаг не обязателен. Если дальнейшая отправка событий и формирование уведомлений не требуется, перейдите к следующему шагу — просмотру уведомлений.

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

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

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

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

  2. В проводнике Windows перейдите в папку Notifications образца Stock. Нужно найти файл с именем FileNotifications.txt, который содержит уведомления, отправленные этим приложением.

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

ms160739.note(ru-ru,SQL.90).gifПримечание.
При необходимости создания другого уведомления без применения повторного создания или изменения образца запустите следующий запрос: USE [StockInstanceStock] DELETE FROM [StockInstanceStock].[dbo].[StockEventsChron]

Остановка ядра

Закончив отправку событий и просмотр полученных уведомлений, остановите ядро служб Notification Services.

Остановка ядра

  • В консольном окне HostableExecutionEngine нажмите клавишу ВВОД, чтобы остановить ядро.

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

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

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

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

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

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

См. также

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

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

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

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

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

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

17 июля 2006 г.

Добавленное содержимое
  • В шаги 3 и 4 подраздела «Запуск образца» добавлены сведения о функциях отправки событий через внепроцессный поставщик событий и поставщик событий наблюдателя файловой системы.
  • Добавлено примечание о роли базы данных NSSubscriberAdmin.

14 апреля 2006 г.

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

5 декабря 2005 г.

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