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


Использование наблюдаемых и перечисляемых источников и приемников событий (StreamInsight)

Платформа StreamInsight поддерживает источники и приемники событий, реализующие интерфейсы IObservable или IEnumerable. Эти интерфейсы являются в платформе .NET Framework основными контрактами общего назначения для передачи данных по запросу (IEnumerable) и принудительной передачи данных (IObservable) между компонентами приложениями.

Интерфейсы IEnumerable и IEnumerator являются привычными для разработчиков, работающих с .NET, но интерфейсы IObservable и IObserver появились в .NET Framework 4 сравнительно недавно. Модель разработки IObservable основана на схеме проектирования «наблюдаемый-наблюдатель». В этой схеме проектирования

  • наблюдатель — это любой объект, который хочет получать уведомлении об изменении состояния другого объекта;

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

В приложениях платформы StreamInsight наблюдаемым является источник событий. Запрос выступает в роли наблюдателя этого источника и представляет свои результаты в качестве наблюдаемого для приемника событий, который в свою очередь является наблюдателем запроса и выступает в роли источника. Дополнительные сведения см. в статье Exploring the Observer Design Pattern (на английском языке) в MSDN.

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

  1. Предоставление класса, реализующего интерфейс IObservable или IEnumerable в качестве источника событий.

  2. Предоставление класса, реализующего интерфейс IObserver, или класса, использующего интерфейс IEnumerable, в качестве обработчика события.

  3. Привязка этих объектов к запросам.

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

  1. Запросы к архивным данным. Финансовый аналитик определяет тенденции рынка с помощью временных запросов к большим наборам данных. В этом случае у входного потока имеется четко определенное завершение — запрос должен завершаться после обработки последнего элемента данных.

  2. Нерегламентированные запросы к оперативным данным. У администратора сервера появились подозрения, что была выполнена атака типа «отказ в обслуживании». Ему удалось определить источник атаки благодаря выполнению последовательных нерегламентированных запросов к потокам сетевых данных, которые он отслеживает.

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

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

В этом разделе

Этот раздел содержит следующие темы.

Замечания по программированию наблюдаемых и перечисляемых источников и приемников событий

Наблюдаемые и перечисляемые источники и приемники событий поддерживаются только во внедренных решениях.

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

API-функции поддерживают временные требования платформы StreamInsight

API-функции обеспечивают полную совместимость с временной моделью платформы StreamInsight, включая постановку в очередь из событий CTI.

  • Замечания о наблюдаемых и перечисляемых входных потоках.

    • Методы To[Point|Interval|Edge]Stream упаковывают входные данные в качестве событий платформы StreamInsight и указывают временные характеристики исходных данных.

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

  • При использовании наблюдаемых и перечисляемых выходных потоков разработчик может использовать методы To[Point|Interval|Edge]Observable и To[Point|Interval|Edge]Enumerable, чтобы добавить сведения о времени в форме точечных, интервальных или граничных событий.

Поддержка наблюдаемых элементов основана на платформе Microsoft .NET Framework 4

Если в приложении используются источники или приемники событий, реализующие интерфейсы IObservable или IObserver:

  • В приложении необходимо ссылаться на сборку Microsoft.ComplexEventProcessing.Observable.dll.

  • Приложение должно использовать платформу .NET Framework 4 (а не клиентский профиль .NET Framework 4).