SQL.RU
 client/server technologies
 Главная | Документация | Статьи | Книги | Форум | Блоги | Опросы | Гостевая | Рассылка | Работа | Поиск | FAQ |

SQL Server Notification Services

ПУБЛИКАЦИИ  

Доклад на конференции Microsoft «Платформа 2003» и на XII ежегодной конференции проводимой TALGAR «ТЕХНИКОН 2002»

По материалам Notification Services Books Online и презентации, которую подготовил Алексей Шуленин.

СОДЕРЖАНИЕ

1 Введение

Оповещения (Notification) давно и прочно вошли в нашу жизнь. Наиболее активно провайдеры контента используют их для доставки информации конечному потребителю в последние десять лет. Для этих целей обычно используются широковещательные рассылки (как и наша "MS SQL Server - дело тонкое…") с фиксированным контентом. К сожалению, автору читаемой Вами в настоящий момент статьи, как и подавляющему большинству контентмейкеров, приходится включать в свои выпуски очень разноплановую информацию, что бы охватить интересы как можно большего круга читателей, иначе, невозможно заинтересовать достаточно большую аудиторию, а, следовательно, достичь заявленных целей и задач рассылки. Это приводит к тому, что Вы получаете не только ту информацию, которая Вам интересна, но и некий "довесок", который может быть полезен другим, но не входит в область Ваших интересов. Кроме того, существующая система транспорта разного рода сообщений, как правило, не имеет гарантий доставки их адресату. С ростом объёмов передаваемой в сети информации, пользователю всё в большей степени требуется персонализация получаемого контента, состав которого определять он хочет самостоятельно. Именно поэтому, появление нового сервиса, предназначенного для обслуживания самого широкого спектра оповещений и позволяющего решить обозначенную выше проблему, представляется весьма интересным событием и эта статья будет посвящена тому, как с помощью нового сервиса оповещений можно решать практические задачи доставки контента потребителю.
Microsoft® SQL Server™ Notification Services (далее: сервис оповещений) является новой платформой для разработки и развертывания прикладных программ, которые генерируют и посылает оповещения пользователям. Под оповещениями понимаются: индивидуализированные, своевременные сообщения, которые могут быть посланы на широкий спектр устройств пользователей. В частности, оповещения могут быть посланы на мобильные, цифровые устройства, рынок которых сегодня бурно развивается.

Для того, что бы пользователь получил оповещение, он должен быть на него подписан. Оформление подписки позволяет определить условия, при которых оповещение должно быть создано и отослано. Получаемые подписчиком оповещения могут соответствовать предпочтениям подписчика, например, могут быть интересны оповещения о том, что цена акции ADCP достигла $70 или о том, что документация о стратегии, которую разрабатывает его команда, была изменена.
Оповещение может быть создано и отослано пользователю при возникновении какого-либо события. Также, оповещение может быть простой, заранее предопределенный, рассылкой данных по правилам, указанным подписчиком.
Оповещения могут пересылаться на разнообразные цифровые устройства. Например, оповещение может быть послано на сотовый телефон, Personal Digital Assistant (PDA), Microsoft Windows Messenger или по электронной почте. Поскольку эти устройства часто используются мобильными пользователями, такие оповещения идеальны для рассылки им критичной, срочной или оперативной информации, с гарантией доставки даже в тех случаях, когда пользователь находится за пределами офиса.
Прикладные программы, использующие оповещения, имеют ценность и востребованность для современного бизнеса по следующим причинам:

  • Оповещающее приложение даёт возможность дифференцированно рассылать критически-важную информацию заказчикам, партнерам и служащим. Оповещения могут содержать ссылки, которые дают возможность получателю просмотреть Web-сайты, чтобы получить дополнительную информацию или подтвердить получение информации.

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

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

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

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

Сервис оповещений позволяет разрабатывать и внедрять приложения на его основе в максимально сжатые сроки и обеспечивает высокий уровень их масштабируемости. Это позволяет таким приложениям поддержать миллионы пользователей. И это уже не только слова, т.к. уже существует множество примеров использования сервиса оповещений для обслуживания задач подобного масштаба.
Одним из таких примеров может стать разработанная компанией Townsend Analytics на базе Notification Services система оперативного оповещения об изменениях на рынках ценных бумаг. По заявлению Джима Холта, менеджера Townsend Analytics по этому направлению: "Главным соблазном было то, насколько быстро всё было развёрнуто и оказалось удобно в использовании, а также то, что нам не потребовалось изобретать велосипед…". Townsend разработала основные функциональные компоненты системы оповещения всего за неделю, привлекая для этого трёх разработчиков. К дополнительным преимуществам, которые были получены, Джим относит низкую стоимость обслуживания системы и высокую гибкость в конфигурации приложений.
Сервис оповещений состоит из двух звеньев:

  • Простой и мощный сервис оповещений с программируемой структурой, которая делает возможными быструю разработку и развёртывание прикладных программ, использующих оповещения. Программирование основано на XML и Transact-SQL.

  • Надежное, быстрое и хорошо масштабируемое ядро, которое обслуживает прикладные программы оповещения. Ядро основано на Microsoft .NET Framework и Microsoft SQL Server 2000.

[В начало]

2. Распространенные бизнес-сценарии оповещений

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

[В начало]

2.1 Потребительские

Организация может использовать сервис оповещений для того, чтобы автоматически посылать уведомления своим клиентам:

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

  • Было бы здорово, чтобы авиакомпания загодя присылала напоминание о прибытии или задержке рейса.

  • Риэлтерская фирма давала знать о том, что появилось новое предложение о сдаче жилья в аренду, удовлетворяющего заданным критериям.

  • Брокер уведомлял, что курс акций Microsoft поднялся выше планки $ХХХ или опустился ниже критической отметки.

[В начало]

2.2 Промышленные

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

[В начало]

2.2.1 Жизненный цикл

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

  • В систему CRM был заведен клиент, который, по критериям BI-модуля, требует особого внимания:
      - Перспективный.
      - Внушает подозрение кредитная история.

[В начало]

2.2.2 Операционная поддержка

Организация может использовать сервис оповещений для того, чтобы посылать уведомления об операциях:

  • Уведомить обслуживающий персонал о сбое в работе узла на сборочной линии:
      - Какой сбой, в каком цеху и, возможно, общая диагностика отказа.
      - Вариант: в журнал ошибок сервера записано сообщение о критической ошибке.

[В начало]

2.2.3 Бизнес-логика

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

  • Остаток запаса продукции ХХХ на складе опустился ниже минимально допустимого значения. Оповещение предписывает оформление заказа на пополнение складского запаса.

[В начало]

2.2.4 Информационная поддержка

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

  • Команда специалистов разрабатывает документацию. Когда в документацию вносятся изменения, члены команды получают об этом уведомления.

  • Цитата из ТЗ: "И чтоб клиентские гриды рефрешились автоматом, когда на серваке чё-то меняется".

[В начало]

2.3 Практический пример использования сценариев оповещения в United Airlines

Одним из ярких воплощений потребительского и промышленного сценариев предоставления услуг оповещающих приложений можно считать системы, разработанные Корпорацией Centerpost для United Airlines, Travelocity и других ведущих компаний. Услуги Centerpost дают возможность компаниям поставлять заказчикам и своим служащим диалоговые оповещения в виде голосовых сообщений, по беспроводной связи, электронной почтой, факсом и посредством систем мгновенной передачи сообщений. Заказчикам это позволяет уменьшить затраты на процессинговые центры обработки запросов пользователей, лучше удовлетворять желания клиентов, получить конкурентное преимущество и быстро создавать новые инновационные услуги. Ниже представлен перечень новых услуг, которые предоставляет United Airlines:

  • Уведомления о состоянии рейса
    Автоматически отправляет голосовые и текстовые предупреждения, когда происходят события, влияющие на планы путешествующих пассажиров. Оповещает пассажиров о задержках рейсов, их отмене, перераспределении, изменении места посадки, получении багажа и прибытии самолётов.

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

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

  • Одноразовая, многоадресная рассылка
    Фокусирует внимание ведущих агентов процессингового центра на поступающих запросах и порождает взаимодействие с подрядчиками, при необходимости разработки новых услуг, призванных удовлетворить новые запросы клиентов. Автоматическая передача тысяч высококачественных голосовых сообщений заказчикам с фиксацией ответов и с обновлением backend - систем в реальном времени.

  • Продвижение услуг
    Современный рынок авиаперевозок характеризуется снижением платы за перелёт и предоставлением тур-пакетов или информации о них по требованию клиентов.

  • Инструкции служащим
    Замена бумажной почты для отправки инструкций служащим и развитие электронного документооборота.

Теперь давайте кратко рассмотрим наиболее очевидные выгоды, от внедрения использующей оповещения системы в United Airlines:

  • Доход от новых, инновационных возможностей
    Отправка сообщений без риска рассылки не по адресу, и предоставление возможности клиентам немедленно реагировать или отвечать на них в диалоговом режиме.

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

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

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

  • Низкие затраты, быстрый результат
    Быстрое внедрение понятной для потребителя стратегии связи. Лёгкое и экономичное обслуживание клиентов дружественной, интерактивной системой. При использовании единой платформы .NET Framework, не нужно больше волноваться о сетевой совместимости, протоколах или устройствах связи, как используемых сегодня, так и в будущем.

[В начало]

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

Итак, во всех задачах оповещения можно выделить следующие общие компоненты:

[В начало]

3.1 Событие (Event)

  • В мире случилось нечто, что кому-то небезразлично.
      - Допустим, Спартаку забили гол.

[В начало]

3.2 Подписка (Subscription)

  • Запрос на специфичный кусок информации.
      - Допустим, меня интересуют события, связанные с игрой Спартака в кубке
      - В данном аспекте меня не интересует игра не Спартака; Спартака, но не в кубке; прирост поголовья пингвинов в районе моря Уэддела и т.д.

[В начало]

3.3 Подписчик (Subscriber)

  • Тот, кто хочет знать о том, что интересующее его событие состоялось.
      - В данном случае как минимум я...

[В начало]

3.4 Оповещение (Notification)

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

[В начало]

4 Как выглядит оповещающее приложение

  • Подписчик объявляет уведомляющему приложению о своей заинтересованности в определенного рода событиях, регистрируя внутри него подписку.
      - Приложение, я хочу получать от тебя оповещения об изменении курса доллара, более чем на 2%.

  • Оповещающее приложение мониторит ту часть окружающего мира, где можно заметить возникновение интересующего события.
      - Напр., в него 2 раза в сутки руками забивают сводки, которые доставляет курьер.
      - Или оно раз в 10 мин. читает Web-страницу ЦБ и парсит таблицу с курсами валют.
      - Или оно работает с Web-сервисом ЦБ, который генерирует событие всякий раз, как что-то меняется.

  • Из всего множества событий, которое отлавливает приложение, оно выделяет те, которые интересуют данного подписчика.
      - Notification Services используют синтаксис Т-SQL, чтобы сопоставить события с критериями, заданными при подписке.
      - И если они совпадают, Notification Services генерируют оповещение для подписчика.

  • Оповещение форматируется в сообщение (возможно, с указанием доп. инф.) и передается службе доставки.
      - Доставка кладет сообщение в заданную файловую папку, FTP-папку, HTTP Post, SMTP и т.д.
      - Notification Services абстрагируются от протокола.

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

Подобную систему, на базе Notification Services, уже сегодня реализовало у себя инвестиционное банковское подразделение Dresdner Bank - Dresdner Kleinwort Wasserstein (DrKW). Этот банк является членом международной кредитной организации Allianz Group. Интранет приложение банка контролирует широкий диапазон событий, отражающихся в back-office системах, и рассылает оповещения для инвестиционных менеджеров и трейдеров.
Другим примером можно назвать одно из старейших и крупнейших кредитных учреждений Италии - Consorzio Gruppo Monte dei Paschi di Siena (MPS), которое существует с 1472 года. Интранет приложения этого банка помогает повысить производительность workflow и создать систему управления обработкой критически - важных документов.
По заявлению менеджер проекта корпоративного портала Elena Innocenti, основная цель состояла в том, чтобы на базе Notification Services создать информационный поток для пользователей корпоративного портала (не зависящий от количества пользователей и места их нахождения), который освободит их от задач ручного поиска изменений в документах, которые они используют для своего бизнеса.

[В начало]

4.1 Более подробно о конвейере сервиса оповещений.

  • Каждый подписчик может заводить много подписок.
      - Данные о подписчиках и подписках Notification Services хранят в БД на SQL Server.
      - Напрямую обращаться туда через ODBC или OLE DB вам не нужно – Notification Services абстрагируют управление подписками/подписчиками при помощи SMO – Subscription Management Objects.
      - SMO – составная часть NS API.

  • Notification Services должны следить за окружающим миром, чтобы выбрать нужные события из всего многообразия изменений.
      - Они делают это при помощи Провайдеров Событий (Event Providers).
      - Каждый Event Provider мониторит свою область бытия:
        ° Напр., File System Watcher контролирует определенную файловую папку.
        ° Как только там появляется XML-документ с описанием случившегося, он считывает его в БД приложения.

  • Модуль под названием Генератор (Generator) занимается сопоставлением параметров отловленного Провайдером события зарегистрированным Подпискам.
      - Сличение происходит как SQL JOIN.
      - Этим он занимается регулярно.
        ° Расписание определяется разработчиком уведомляющего приложения.
      - Генератор также извлекает из события дополнительные данные, которые войдут в уведомление для Подписчика

  • Модуль под названием Дистрибутор (Distributor) компонует сообщение и отсылает его Подписчику через службы доставки.
      - Обычно компоновка/форматирование происходят при помощи XSLT.

[В начало]

4.2 Итак, еще раз

  • Три базовых компоненты трудятся на конвейере Notification Services:
      - Event Provider отлавливает события внешнего мира, на которые он настроен, и кладет их на конвейер
      - Generator берет событие с конвейера, смотрит, какие подписки оно может заинтересовать и генерирует для них оповещения
      - Т.е. дальше по конвейеру движется уже обработанное событие – оповещение
      - Distributor получает оповещение, форматирует его в сообщение и отправляет подписчику

[В начало]

4.3 Конвейер в архитектуре оповещений

  • На рисунке показано место конвейера сервиса оповещений в общей архитектуре Notification Services.

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

  • Венцом архитектуры являются оповещающие приложения, написанные в виде управляемого кода .NET

  • Оповещающие приложения определяют логику работы (жёлтые стрелки)

  • Результат работы приложения – оповещения (голубые стрелки)

[В начало]

5 Архитектура Notification Services

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

[В начало]

5.1 Архитектура управления подпиской

Чтобы посылать оповещения, разработанное Вами приложение должно уметь управлять информацией о подписчиках, управлять данными, которые они хотят получать и управлять способами доставки оповещений, которыми подписчики хотят эту информацию получать.
Это может быть Web-приложение или стандартное Microsoft Windows приложение. Оно будет сохранять информацию о подписчиках, подписке и устройствах получения данных подписчика в базе данных Notification Services. Для этого, разработчик может использовать имеющийся в составе сервиса оповещений набор объектов Subscription Management Objects (SMO). SMO предназначен для абстрагирования от внутренней «кухни» сервиса оповещений.
Данные, на которые осуществляется подписка, хранятся в пользовательских базах данных. Такой метод хранения позволяет прикладным программам совместно использовать подписываемые данные и при этом отдельно хранить информацию о подписках для каждого приложения.

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

[В начало]

5.2 Архитектура Event Collection

Event Collection – это процесс получения данных о событиях из одного или более источников, таких как: XML файлы, прикладные программы или базы данных. Кроме того, это процесс обеспечения доступности информации о событиях для оповещающих приложений. В архитектуре сервиса оповещений поддержкой Event Collection занимаются провайдеры событий. Каждое приложение использует для отслеживания событий одного или более провайдеров. Каждый провайдер событий передаёт данные приложению, используя один из четырёх интерфейсов событий (Event API): управляемый API, COM API, (который использует управляемый API), XML API и SQL Server API.

  • Управляемый API использует объекты и коллектор событий для того, чтобы передать одиночные события. Используя имена полей в таблице событий, приложение передаёт объект – событие в Event Collection, который записывает данные в таблицу событий. COM API использует COM interop, чтобы представить классы событий, как COM -интерфейсы.

  • XML API обеспечивает массовую загрузку XML данных. Провайдер XML событий собирает XML документ или поток от источника событий и передаёт данные в XMLLoader, который записывает события в таблицу событий.

  • SQL Server API использует хранимые процедуры для загрузки данных о событиях, хранящихся в объектах базы данных. Существует два типичных пути использования провайдера событий SQL Server, это вызов провайдера через хранимую процедуру или исполнение запроса по предопределённому расписанию. Провайдер событий получает результирующий набор и записывает его средствами хранимых процедур в таблицу событий.

[В начало]

5.3 Провайдеры событий

  • Собирают изменения в данных из внешней деятельности и отправляют их как События в Пакетах Событий (Event Batches).

  • Оповещающее приложение должно иметь хотя бы одного действующего провайдера событий.

  • Провайдеры событий отображаются на классы событий (Event Classes).

  • Notification Services поставляются с 2-мя провайдерами.
      - File System Watcher Event Provider.
      - SQL Server Event Provider.

[В начало]

5.3.1 Стандартные и пользовательские провайдеры

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

[В начало]

5.3.2 Hosted и Non-Hosted (Independent) провайдеры

Hosted (зависимый) провайдер событий выполняется под управлением специального компонента сервиса оповещений, называемого: Event Provider Host. Event Provider Host работает по тому же расписанию (которое определено в ADF), что и генератор. Независимые (Non-Hosted) провайдеры работают как внешние программы и поставляют события по их собственным расписаниям. К независимым провайдерам событий можно отнести провайдера, управляемого службой Internet Information Services (IIS), который обеспечивает методы для передачи событий через Web. Те из написанных разработчиками провайдеров, которые является зависимыми от внутренних процессов сервиса оповещений, также относятся к категории независимых провайдеров событий.

  • Зависимые
      - Работает in-process (непрерывно) в Notification Services Windows Service или вызывается по расписанию, определённом в ADF файле.
      - Должен имплементировать интерфейсы IEventProvider или IScheduledEventProvider.
      - Меньше программирования.
      - Initialize, Run, Terminate, Schedule.
      - Запускается и останавливается вместе с Notification Services Windows Service.

  • Независимые
      - Работает на удаленной системе / альтернативной платформе
      - Стартует/останавливается независимо от Notification Services Windows Service

[В начало]

5.3.3 Пакетные события

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

[В начало]

5.3.4 Функциональность провайдера событий

  • Standard
      - File System Watcher Provider.
      - SQL Server Provider.
    Custom
      - Managed или unmanaged провайдер.
      - Может использовать OLAP, MSMQ, Web Service, ...

  • Hosted
      - NS хостит провайдеров событий.
      - Загружаются в адресное пространство NS из внешних сборок.
      - Провайдеры событий реализуют определенные в NS интерфейсы.
    Non-Hosted
      - Выполняется в отдельном процессе.
      - Использует функции NS API, либо хранимые процедуры SQL Server.

  • Scheduled
      - Реализует IScheduledEventProvider.
      - Расписание задается разработчиком уведомляющего приложения.
    Continuous
      - Реализует IEventProvider.
      - Крутится, пока запущен сервис NS.

[В начало]

5.4 Передача событий в коллектор

  • Event Object

  • XMLLoader Object

  • Event Submission SQL Server Stored Procedures

[В начало]

5.4.1 Передача через EventObject

  • Пользовательский провайдер.
      - Принимает данные из внешнего источника.
      - Создает и наполняет объект события данными.
      - Вызывает метод “Write” Event Collector’a для каждого события.
      - Вызывает метод “Commit” Event Collector’a, когда пакет событий сформирован, который вставляет события в таблицу.
      - Может сказать Abort.
      - Обычно события передаются пакетами для лучшей производительности Генератора.
      - Когда сервис NS стопится, хост провайдеров вызывает метод Terminate, который может быть реализован в пользовательском провайдере.

[В начало]

5.4.2 Передача через XMLLoader

  • Используется SQLXML 3.0.

  • Пользовательский провайдер.
      - Принимает данные из внешнего источника.
      - Создает объект EventLoader на основе аннотированной схемы, задающей XML-представление таблицы событий на SQL Server.
      - Стандартными средствами XML BulkLoad документ грузится в таблицу.
        ° Таким образом, здесь пакет событий передается в виде XML-документа.

[В начало]

5.4.3 Хранимые процедуры для передачи событий

  • Event Class stored procedures
      - NSEventBeginBatch<eventClassName>
        ° ProviderName, BatchId out

      - NSEventWrite<eventClassName>
        ° BatchId, Column1, Column2, ...

      - NSEventFlushBatch<eventClassName>
        ° BatchId

  • Создаются для каждого уведомляющего приложения
      - Во время запуска nscontrol create

  • При создании используется схема описания класса событий, определенная в ADF (Application Definition File)

[В начало]

5.4.4 NSEventSubmitBatchEventClassName

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

  • Пример
    ...
    SET @eventQuery = SELECT stocksymbol, stockprice from RDT1
        UNION SELECT stocksymbol, stockprice from RDT2
    SET @postQuery = DELETE RDT1 DELETE RDT2
    SET @providerName=‘StockEP’
    EXEC NSEventSubmitBatchStockEvent @providerName, @eventQuery, @postQuery

[В начало]

5.5 Архитектура обработки подписок

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

Чтобы сгенерировать оповещение, разработчик создаёт одно или более правил для каждого приложения. Эти правила представляют собой Transact-SQL запросы, которые определяют состав относящихся к подписке событий, а также все другие условия, которые должны быть выполнены при генерации оповещения.

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

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

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

Если приложение использует подписки с расписанием, при их обработке, генератор видит только те подписки, которые соответствуют этим расписаниям. Например, если генератор запускается каждые 15 минут, в 8:00 генератор обработает все подписки, расписание которых укладывается в диапазон между 7:45 и 8:00.

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

[В начало]

5.5.1 Генератор

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

  • Правила соответствия описываются при помощи SQL.
      - Это просто join записей из таблицы событий и таблицы подписок.
      - Может быть задействован весь функционал SQL: хранимые процедуры, транзакции, ...

    SELECT StockNotificationNotify( S.SubscriberId, S.DeviceName, S.Locale, S.Symbol, E.Price) FROM StockEvents E, StockSubscriptions S WHERE E.Symbol = S.Symbol AND E.Price >= S.TriggerPrice

[В начало]

5.5.2 Функция оповещения

  • Notify Function.
      - В предыдущем примере – StockNotificationNotify ( S.SubscriberId, S.DeviceName, S.Locale, S.Symbol, E.Price).
      - Кладет информацию о событии, соответствующем данной подписке, в таблицу оповещений.
        ° Т.е. в таблице оповещений в виде записей хранятся «сырые» (не отформатированные) оповещения.

      - NS генерирует уникальную функцию оповещения, которая программируется под каждый класс оповещений.
        ° Так, что она «знает» имя и тип каждого поля в таблице оповещений.

[В начало]

5.5.3 Квант генератора

  • Интервал времени, определяющий с какой частотой будут срабатывать системные функции Notification Services.

  • Задается в ADF

    
    <ApplicationExecutionSettings> <QuantumDuration>P0DT00H05M00S</QuantumDuration> 
    ... 
    </ApplicationExecutionSettings>

  • Выбор кванта позволяет найти баланс между скоростью работы приложения и потреблением ресурсов.
      - Чем меньше квант, тем чаще срабатывает генератор.

  • По умолчанию 1 мин.

[В начало]

5.5.4 Правила подписки

Оперируя генератором с помощью определённых на Transact-SQL сценариев логики работы приложения, можно создавать правила следующих двух типов:

  • Subscription event rules – правила для подписанных событий.
      - Как генерировать оповещение для данной подписки, когда произошло событие данного класса.
      - Для подписок, основанных на событиях.
        ° Известить, когда курс MSFT перевалит за $70.00.
      - Содержится внутри класса подписки, ссылается на класс событий.
      - Сюда же может входить event chronicle rule (см. дальше).

  • Subscription scheduled rules – правила подписок по расписанию.
      - Как генерировать оповещение, когда наступило время Ч.
      - Для подписок, основанных на расписании
        ° Присылать курс MSFT в 13:00 с пн по пт
      - Сюда же может входить chronicle rule

[В начало]

5.5.5 Поддержка хроники событий

  • Данные оповещений могут сохраняться в таблицах хроники после того, как оповещение было отправлено.
      - Например, для подготовки summary.

  • Event Chronicle Rules определяют правила (insert, update, delete) в таблицах хроники.

  • Определяются в классе события.
      - <ChronicleRule>

  • Или в классе подписки (см. пункт: Правила подписки).
      - <EventRules>

[В начало]

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

  • Как мы уже знаем, подписка может содержать несколько event rules и несколько scheduled rules.

  • Нет предопределенного порядка срабатывания правил одного класса внутри подписки.
      - Это следует иметь в виду при разработки бизнес-логики под каждое правило.

  • В остальном порядок срабатывания зависит от установки <ProcessEventsInOrder> в <ApplicationExecutionSettings> в ADF.
      - True означает субквантовую последовательность.
        ° Пакеты событий обрабатываются строго в порядке поступления.
        ° Сначала к ним применяются event chronicle rules, затем - subscription event rules.
        ° Подписки по расписанию также срабатывают в порядке очередности в свое время до или после обработки пакета в зависимости от того, когда он пришел.
      - False означает квантовую последовательность.
        ° Порядок обработки пакетов событий внутри кванта никак не соблюдается, они все обрабатываются синхронно.
        ° Гарантируется только порядок срабатывания по типам правил: Event chronicle rules, Subscription event rules, Subscription scheduled rules.

[В начало]

5.5.7 Лимиты по времени

  • Когда нагрузка на генератор высока, он может не успеть обработать все, что полагается в этом кванте.

  • Можно ему сказать, чтобы он не обрабатывал хронику старше <ChronicleQuantumLimit> и события подписки старше <SubscriptionQuantumLimit>
      - С одной стороны это все равно уже, скорее всего, неактуально
      - С другой стороны позволит ему нагнать запаздывание

  • Дает возможность установить баланс между скоростью работы и корректностью данных.

  • Задается в квантах.
      - По умолчанию, 1440 и 30, соответственно.

[В начало]

5.5.8 Функциональность генератора

Event-triggered subscriptions
Известить меня, как только курс акций Microsoft перейдёт границу $60.
Scheduled subscriptions
Посылай мне оповещения о стоимости моего портфеля акций регулярно в 17:00 с понедельника по пятницу.
Application State

  • История событий.
      - Курс акций MS на последних торгах составил $75.
      - Вчера температура воздуха в Сиэтле была 12°С.

  • История подписчика.
      - Пришли мне все документы, модифицированные с момента последнего уведомления.
    Leverage external data
    Возьми из базы мою персональную информацию и добавь ее к уведомлению.

[В начало]

5.6 Архитектура форматирования и рассылки оповещений

Форматирование и рассылка оповещений выполняется дистрибутором. После того, как генератор создал пакет оповещений, дистрибутор считывает данные о подписчиках для каждого оповещения, определяя, какое требуется форматирование. После этого, дистрибутор соответствующим образом форматирует оповещение и посылает его, используя один из каналов доставки, например: SMTP сервер (Simple Mail Transfer Protocol).

[В начало]

5.6.1 Схема работы дистрибутора

  • Для каждого Notification Class генератор подготавливает «сырые» оповещения
      - Хранятся как записи в таблицах SQL Server.

  • Цикл работы дистрибутора.
      - Периодически сканирует таблицы в поисках пакетов оповещений, готовых к распространению.
      - Форматирует «сырые» данные оповещений из SQL Server.
      - Производит сборку отформатированных оповещений в пакеты, специфичные для протокола доставки.
      - Доставляет пакет по протоколу (HTTP, SMTP, …).
      - Обрабатывает ошибки доставки.

[В начало]

5.6.2 Форматирование контента

  • Превращает «сырые» оповещения из таблиц SQL Server в сообщения, удобные для восприятия подписчиком.
      - При этом учитывается язык, региональные настройки и тип устройства.

  • Определяется на каждый NotificationClass.
      - Оповещения о биржевых котировках, очевидно, выглядят иначе, нежели расписание авиарейсов.

  • Встроенный XSLT Formatter

  • Можно также написать свой.
      - Реализовав интерфейс IcontentFormatterInterface.
      - Методы Initialize, ContentFormat, Close.

[В начало]

5.6.3 Каналы доставки

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

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

  • SMTP протокол для оповещений, рассылаемых через Microsoft Exchange Server или другой SMTP сервер.

  • Расширенный HTTP протокол, который может использоваться для Simple Object Access Protocol (SOAP), SMS, .NET Alerts или другие, основанные на HTTP протоколы.

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

  • Дополнительные протоколы, которые может выбрать разработчик прикладных программ.

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

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

[В начало]

5.6.4 Дайджест и мультикаст

В дополнение к стандартному форматированию типа сообщение - в - сообщение и соответствующей доставке, сервис оповещений предлагает вам ещё две опции: дайджест рассылка (группирующая в одном оповещении множество сообщений для отдельного подписчика) и мультикаст рассылка, которая посылает отдельное оповещение множеству подписчиков.

  • Дайджест: когда несколько индивидуальных оповещений для данного подписчика комбинируются в одно.
      - Напр., оповещения о курсе акций MSFT, IBM, CSCO,… посылаются как одно совокупное оповещение.
      - Можно назначить на каждый Notification Class.
      - Способствует повышению производительности.

  • Мультикаст: одно и то же оповещение рассылается нескольким подписчикам.
      - Напр., прогноз погоды в Москве, очевидно, одинаков для всех на него подписавшихся.
      - Можно назначить на каждый Notification Class.
      - Форматирование происходит один раз.
      - Нижележащий протокол может выбрать посылку одного сообщения или каждого отдельно.
      - Меньшая нагрузка на каналы.

[В начало]

5.6.5 Логика повторных попыток

  • Обрабатывает сбои доставки.
      - Если доставка не состоялась, дистрибутор может предпринять повторные попытки.

  • Разработчик уведомляющего приложения задает расписание повторных попыток на каждый класс оповещений (и на каждый протокол).
      - Кол-во попыток и интервалы.

  • Если оповещение устареет раньше, чем закончится расписание, оно не будет доставляться.

  • Если расписание закончилось безуспешно, оповещение помечается флажком done & failed.
      - Пылесос периодически чистит как успешно доставленные, так и не состоявшиеся оповещения.

[В начало]

5.6.6 Взаимодействие с Message Queuing и .NET Alerts

Сервис оповещений и Microsoft .NET Alerts являются дополняющими друг друга технологиями. После того, как сервис оповещений создал оповещение, доставить его подписчикам может служба .NET Alerts Web, которая может использовать ряд устройств, таких, как e-mail, Microsoft Windows Messenger или мобильные телефоны.

Сообщениями в очереди могут быть и события от оповещающего приложения, которые отправлены посредством MSMQ или Microsoft BizTalk через каналы доставки, используемые этим приложением.

[В начало]

5.6.7 Функциональность дистрибутора

Formatting

  • Выбор модели форматирования (xslt или пользовательское).

  • Зависит от устройства (мобильный тел., email, Instant Manager, ...).

  • Зависит от региональных предпочтений (формат даты, валюты, язык, ...).

Multi protocols Delivery

  • File, SMTP, .NET Alerts.

  • Пользовательские протоколы доставки.

  • Среда расширения для доставки, базирующейся на http.

Digested notifications

  • Извещать меня каждый час о горячих новостях финансового рынка (присылай мне все в одном сообщении).

  • Пришли мне список всех документов, модифицированных с момента последнего уведомления.

‘Multicast’ notifications
  • Форматирование происходит один раз для всей группы.

  • Одно и то же сообщение рассылается многим подписчикам.

  • Пришли мне прогноз погоды по Москве и области.

[В начало]

5.7 Приложение управления подписками

  • Пишется в виде:
      - Управляемого кода: ASP .NET, C#, VB.Net, ...
      - Неуправляемого кода: ASP, C++, VB6, ...

  • Работает с 3 классами:
      - Subscriber
        ° Представляет того, кто получает оповещения.
        ° Обычно один на пользователя.
      - Subscription
        ° Какая информация и когда должна отправляться.
        ° Несколько подписок на одного подписчика.
      - SubscriberDevice
        ° Куда отправляется информация.
        ° Несколько устройств на подписчика.

  • Метод Add добавляет свойства объекта в таблицу SQL Server.

[В начало]

5.7.1 Примеры существующих приложений управления подписками

Система SmartDelivery, разработанная компанией Centerpost на основе платформы Microsoft .NET, осуществляет рассылку диалоговых оповещений и другой информации клиентам и своим служащим; используя голосовые сообщения, беспроводную связь, электронную почту, факс и Microsoft .NET Alerts.

Другая система: MobileSys Network DeliveryChannel (MNDC) является приложением, работающим с Microsoft SQL Server 2000 Notification Services. MNDC позволяет рассылать ключевую информацию и предупреждения в виде оповещений от SQL Server по беспроводным линиям связи на обычные телефоны или мобильные устройства.

[В начало]

6 Оповещающее приложение

  • Приложение определяет:
      - Один или несколько классов событий, классов подписки (правила подписки) и классов оповещений.

  • Каждому уведомляющему приложению соответствует отдельная БД SQL Server.
      - В которой хранится информация о событиях, подписках, оповещеньях и хроника System Elements.

  • Элементами приложения являются:
      - Провайдеры событий (на входе), Генератор (оценка правил), Дистрибуторы (выход).

[В начало]

6.1 Ещё несколько практических примеров использования оповещающих приложений.

  • Clalit Health Services - одно из самых больших медицинских учреждений Израиля. Использует оповещающие приложения для доставки критически-важных результатов лабораторных исследований и анализов, выполненных для своих пациентов, лечащим докторам и ведущим специалистам по всей стране. Это позволяет быстрее ставить диагнозы и принимать по ним решения, что существенно улучшает качество медицинского обслуживания. По заявлению Gadi Gilon, директора по IT, использование Notification Services впервые позволило докторам реагировать в реальном времени на результаты лабораторных исследований и быстрее начинать лечение, когда это необходимо.

  • DevelopMentor - специализирующаяся на обучении компания, которая разработала новый, трехдневный курс обучения: "Essential Notification Server", для разработчиков оповещающих приложений. Из-за чрезвычайной простоты использования Notification, Services этот практический курс позволяет начинать разработку таких приложений прямо в классе. Mike Abercrombie, президент компании, подчёркивает, что эта простота даёт возможность слушателям курса разрабатывать реальные прикладные программы в классе (вместо программ, которые только демонстрируют возможности сервиса оповещений) и развёртывать их в своей промышленной среде сразу, по окончании обучения. По его словам, такое можно было организовать только с Notification Services, потому что он настолько удобен и прост в использовании.

  • HP - на базе SQL Server 2000 Notification Services планирует оказывать консультационные и услуги по интеграции своих решений, чтобы обеспечить необходимую сегодня быстроту развёртывания. По заявлению Rick Fricchione, вице-президента HP Enterprise Microsoft Services, после проведения собственной экспертизы и основываясь на накопленном опыте в планировании, проектировании и внедрении таких IT решений, стало ясно, использование платформы Microsoft .NET совместно с Notification Services позволит HP сделать свои услуги и решения более ёмкими, что даст возможность заказчикам достичь более высокого уровня активности и гибкости в бизнесе.

  • Nasdaq.COM - одна из крупнейших фондовых бирж. Её Internet - приложения позволяю подписчикам получать персонализированные оповещения о финансовых показателях, интересующих их изменениях и позволяют клиентам лучше понимать тенденции рынка, а также быстро получать критически - важную информацию. По заявлению John Delta, вице-президента и генерального директора Nasdaq, они очень довольны простотой, стабильностью и эффективностью использования SQL Server 2000 Notification Services в качестве платформы для новых предложений, которые биржа предлагает своим заказчикам и партнерам.

  • NYTimes.COM - подразделение New York Times, предоставляющее риэлтерские услуги на рынке недвижимости Восточного побережья. Его приложение New York Times Real Estate Tracker, работающее на базе Notification Services, позволяют подписаться на оперативные оповещения о выставленных на продажу новых объектах недвижимости. Определив атрибуты и свойства подписчика (например, арендатор/покупатель) система автоматически генерирует и посылает оповещение всякий раз, когда в тематическом разделе каталога недвижимого имущества появляется соответствующая новая запись. По заявлению Jeff Moriarty, директор тематического раздела по недвижимости, это позволяет подписчикам экономить время, а агентам быстрее продать недвижимость, и это повышает лояльность к фирме её клиентов и трафик Web-сайта. Кроме того, Notification Services даёт необходимую гибкость, чтобы переносить в будущем приложение Real Estate Tracker на другие платформы.

  • Townsend Analytics Ltd. - Оповещает о текущем курсе акций на рынках ценных бумаг в реальном масштабе времени. Обеспечивает контроль торгов, генерирует и доставляет оповещения, когда обнаружены отклонения. По заявлению Stuart Townsend, президента компании, простая структура программирования и масштабируемое серверное решение, основанное на SQL Server, позволяют быстро разрабатывать и развёртывать новые, инновационные оповещающие приложения для монитора данных. Они обеспечивают заказчика удобным доступом к интересуемой и настраиваемой информации, что даёт им возможность принимать необходимые меры, прежде чем потенциальные возможности испарятся или будут потеряны.

[В начало]

7 Экземпляр Notification Services

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

  • Каждый экземпляр представляет собой многопоточную службу Windows.
      - Объединяющую провайдеров событий, генератор и дистрибутор.

  • На одной машине может работать несколько экземпляров.
      - Допустим, разработка - тестирование - эксплуатация.
      - Отдельные Windows Services, базы данных, ...

  • Экземпляр может охватывать несколько компьютеров.
      - Напр., несколько дистрибуторов.

[В начало]

8 Версионность Notification Services

  • На одном компьютере можно устанавливать несколько экземпляров Notification Services различных версий.
      - Инсталляция новой версии по умолчанию не удаляет / не заменяет ранее установленные экземпляры.
      - Можно проапгрейдить отдельный экземпляр, не затрагивая остальные.

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

[В начало]

9 Модель безопасности

  • Основана на ролях уровня БД в SQL Server.
      - NS определяет набор ролей, ассоциированных с различными операциями: NSSubscriberAdmin, NSRunService, ...

  • Доступ к БД Notification Services осуществляется только через хранимые процедуры.
      - Создаются в процессе компиляции приложения.

  • Доступ дается по принципу "минимально необходимые права".

  • NS Service запускается с наименьшими привилегиями операционной системы.

[В начало]

10 Надёжность

SQL Server 2000 имеет высоко надежное ядро базы данных, которое хранит данные и обрабатывает подписки. Сервис оповещений, используя управляемый код для разрабатываемых компонент, гарантирует, что эти компоненты не поставят под угрозу стабильность системы. Сервис оповещений обеспечивает более высокую надёжность за счёт следующего:

  • Данные по подпискам, обслуживаемые сервисом оповещений, хранятся в SQL Server 2000, который является высоко надёжным сервером базы данных, поддерживающим журналирование с упреждающей записью и возможностью включения серверов в кластер.

  • Обработка событий, подписок и оповещений использует транзакционный механизм, обеспечивая, таким образом, дополнительные гарантии надежности. Обратите внимание, что некоторые протоколы доставки (например, SMTP) не обеспечивают гарантируемую доставку оповещений. Однако, платформа сервиса оповещений имеет логику повторных попыток, которая дает возможность приложению снова посылать оповещения, чтобы повторно осуществлять попытки его доставки.

  • Разработчики могут создавать надежных провайдеров событий и надежные протоколы доставки (например, основанные на Microsoft Message Queuing), обеспечивая таким образом надёжность во всей цепочке оповещения.

[В начало]

11 Масштабируемость

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

  • Логика подписки может быть распараллелена, что повышает эффективность за счёт масштабирования ядра SQL Server.

  • Сервис оповещений работает в многонитиевом режиме, что позволяет масштабировать за счёт увеличения числа процессоров.

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

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

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

[В начало]

11.1 Базовые сценарии развертывания

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

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

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

[В начало]

12 Доступность

Для каждого экземпляра сервиса оповещений данные обслуживаются SQL Server. Только при трансляции данные обслуживаются провайдером событий, генератором и дистрибутором. Этот аспект является критическим для общего дизайна, потому что при таком подходе уровень доступности системы в целом определяет только уровень доступности сервера базы данных. SQL Server является надежной системой управления базы данных, поддерживающей технологии обеспечения высокой доступности, включая SQL Server 2000 failover clustering, log shipping, и репликацию транзакций. Сервер базы данных может быть сконфигурирован так, что отработка аппаратных сбоев будет происходить незаметно для клиентов.

[В начало]

13 Доступность и масштабируемость

[В начало]

14 Требования по установке (разработка)

 

Минимальные

Рекомендуемые

Процессор

Pentium III 450 MHz

Pentium III 733 MHz

Операционная система

Windows 2000 Professional, Windows 2000 Server, Windows XP

Windows 2000 Professional, Windows 2000 Server, Windows XP

Память

128 MB

256 MB

Жесткий диск

500 MB

1 GB

ПО

SQL Server 2000 (Enterprise, Standard, Developer) + Microsoft .NET Framework

SQL Server 2000 (Enterprise, Standard, Developer) SP2 + Microsoft .NET Framework

[В начало]

15 Требования по установке (эксплуатация)

 

Минимальные

Рекомендуемые

Процессор

Pentium III 450 MHz

Pentium III 733 MHz

Операционная система

Windows 2000 Server, Windows 2000 Advanced Server, Windows Datacenter Server

Windows 2000 Server, Windows 2000 Advanced Server, Windows Datacenter Server

Память

128 MB

256 MB

Жесткий диск

500 MB

1 GB

ПО

SQL Server 2000 (Enterprise, Standard, Developer) + Microsoft .NET Framework

SQL Server 2000 (Enterprise, Standard, Developer) SP2 + Microsoft .NET Framework

  • При использовании провайдера событий FileSystemWatcher с возможностью XML Bulkload, требуется SQLXML 3.0 SP1

[В начало]

16 Редакции

Характеристика

Standard Edition

Enterprise Edition

Горизонтальная масштабируемость

-

+

Кол-во потоков генератора (на экземпляр)

1

до 25

Кол-во потоков дистрибутора (на экземпляр)

до 3

неограниченно

Размер пакета уведомлений

фиксированный

настраиваемый

Мультикаст-доставка

-

+

[В начало]

17 Администрирование сервиса оповещений

Системный администратор несёт ответственность за развертывание прикладных программ, работающих с Notification Services. Обеспечение работоспособности и оптимизация прикладных программ требует осторожного планирования, инсталляции, конфигурации, управления и контроля.
Планирование и инсталляция включают определение инфраструктуры, необходимой для прикладных программ, планирование системной архитектуры и последующей установки системных компонент на каждом сервере.
Конфигурирование, это процесс развёртывания экземпляров сервиса оповещений. Сюда включаются задачи управления версиями и оптимизация нагрузки в процессе эксплуатации и обновлений. Типичное конфигурирование состоит из следующих задач:

  • Создание файла конфигурации.

  • Использование команды NSControl CREATE, для создания экземпляров, и NSControl REGISTER, для их регистрации.

  • Загрузка данных подписок или развертывание оповещающих приложений.

  • Запуск экземпляров в промышленную эксплуатацию.

  • Запуск службы NS$instance_NAME или служб, которые исполняются под управлением экземпляра сервиса оповещений.

Многие задачи соответствуют типичным задачам администрирования баз данных SQL Server. Вот эти задачи:

  • Резервное копирование.

  • Очистка данных.

  • Разрешение проблем.

  • Установка обновлений.

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

  • Счетчики эффективности.

  • Записи о статусах и хронологии.

  • Сообщения из файла регистрации ошибок.

[В начало]

18 Дополнительная информация

  • Документация

  • Обзоры

  • Системные требования

  • Дополнительные технические материалы

  • Список партнеров

  • Истории внедрения

  • Разъяснения по лицензированию

  • Собственно, сам продукт
    http://www.microsoft.com/sql/ns/default.asp

[В начало]

19 Перспективы развития Notification Services в SQL Server .NET "Yukon"

  • SQL Server Service Broker
      - Использует грамматику T-SQL (SEND / RECEIVE).
        ° Вместо хранимых процедур.
      - Дальнейшее развитие асинхронной, слабо связанной модели вычислений.
      - Триггер записывает сообщение в очередь, чтобы начать "долгоиграющий" процесс, не дожидаясь его завершения.
      - Хранимая процедура может запускать несколько других процедур параллельно для улучшения производительности.
      - Очереди используются для выравнивания пиков потребления процессорного времени.
        ° Повышение скорости обработки и пропускной способности.

  • С хостингом CLR внутри SQL Server вся логика разрабатывается внутри БД.

[В начало]

19.1 Увеличение масштабируемости за счет сглаживания пиков

[В начало]

19.2 Запросные оповещения

[В начало]

20 Итоги

  • Notification Services являются платформой для быстрой разработки нотификационных приложений.

  • Легкая в использовании декларативная программная модель.
      - Разработка полностью интегрирована с принципами .NET

  • Использование SQL Server в качестве основы позволяет добиться существенной масштабируемости нотификационных приложений.
      - Тысячи событий.
      - Миллионы подписок и оповещений.

[В начало]

Автор: Александр Гладченко  2003г.

Rambler's Top100 Рейтинг@Mail.ru  Administrator: Обратная связь 
Copyright: SQL.Ru 2000-2013