Использование наблюдаемых и перечисляемых источников и приемников событий (StreamInsight)
Платформа StreamInsight поддерживает источники и приемники событий, реализующие интерфейсы IObservable или IEnumerable. Эти интерфейсы являются в платформе .NET Framework основными контрактами общего назначения для передачи данных по запросу (IEnumerable) и принудительной передачи данных (IObservable) между компонентами приложениями.
Интерфейсы IEnumerable и IEnumerator являются привычными для разработчиков, работающих с .NET, но интерфейсы IObservable и IObserver появились в .NET Framework 4 сравнительно недавно. Модель разработки IObservable основана на схеме проектирования «наблюдаемый-наблюдатель». В этой схеме проектирования
наблюдатель — это любой объект, который хочет получать уведомлении об изменении состояния другого объекта;
наблюдаемой называется последовательность, основанная на принудительной передаче, в которой можно зарегистрировать другой объект.
В приложениях платформы StreamInsight наблюдаемым является источник событий. Запрос выступает в роли наблюдателя этого источника и представляет свои результаты в качестве наблюдаемого для приемника событий, который в свою очередь является наблюдателем запроса и выступает в роли источника. Дополнительные сведения см. в статье Exploring the Observer Design Pattern (на английском языке) в MSDN.
В задачи разработчика приложения по включению этой модели разработки входит всего несколько этапов.
Предоставление класса, реализующего интерфейс IObservable или IEnumerable в качестве источника событий.
Предоставление класса, реализующего интерфейс IObserver, или класса, использующего интерфейс IEnumerable, в качестве обработчика события.
Привязка этих объектов к запросам.
Для определения временных характеристик событий в этой модели разработки не требуются значительные затраты времени на обучение и на программирование. Кроме того, не обязательно учитывать переходы между базовыми состояниями в модели адаптера. Ниже описано несколько сценариев, в которых рекомендуется использовать данную модель разработки.
Запросы к архивным данным. Финансовый аналитик определяет тенденции рынка с помощью временных запросов к большим наборам данных. В этом случае у входного потока имеется четко определенное завершение — запрос должен завершаться после обработки последнего элемента данных.
Нерегламентированные запросы к оперативным данным. У администратора сервера появились подозрения, что была выполнена атака типа «отказ в обслуживании». Ему удалось определить источник атаки благодаря выполнению последовательных нерегламентированных запросов к потокам сетевых данных, которые он отслеживает.
Внедрение в пользовательские приложения. Разработчик пользовательского интерфейса анализирует закономерности в перемещениях мыши, используя временные запросы к событиям Windows. Платформа StreamInsight внедряется в пользовательские приложения.
В каждом из описанных выше случаев запрос существует только в течение срока, пока клиентское приложение прослушивает его результаты.
В этом разделе
Этот раздел содержит следующие темы.
Законченный пример перечисляемых источника и приемника событий (StreamInsight)
Поддержка API-функций для интерфейсов IObservable и IEnumerable в StreamInsight
Дополнительные сведения об интерфейсах IObservable и IEnumerable в 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).