Compartilhar via


Usando origens de evento observáveis e enumeráveis, e coletores de eventos (StreamInsight)

O StreamInsight oferece suporte para origens e coletores de eventos que implementam as interfaces IObservable e IEnumerable. Estas interfaces são os contratos dominantes de uso geral no .NET Framework para receber pulling (IEnumerable) e enviar (IObservable) dados entre os componentes de um aplicativo.

Enquanto as interfaces IEnumerable e IEnumerator já são familiares a desenvolvedores .NET, as interfaces IObservable e IObserver foram introduzidas mais recentemente no .NET Framework 4. O modelo de desenvolvimento IObservable é baseado no padrão de design observável/observador. Neste padrão de design:

  • Um observador é qualquer objeto que deseja ser notificado quando o estado de outro objeto é alterado.

  • Um observável é uma sequência baseada em envio, na qual outro objeto pode registrar um interesse.

Em um aplicativo StreamInsight, o observável é a origem do evento. A consulta CEP atua como observador dessa origem e apresenta seu resultado como observável ao coletor de eventos, que por sua vez é um observador da consulta como a origem. Para obter mais informações, consulte Explorando o padrão de design do observador no MSDN.

As tarefas para que o desenvolvedor do aplicativo habilite este modelo de desenvolvimento são mínimas:

  1. Fornecer uma classe que implementa a interface IObservable ou IEnumerable como o produtor de evento.

  2. Fornecer uma classe que implementa a interface IObserver ou uma classe que consome um IEnumerable como o consumidor de evento.

  3. Associar estes objetos a consultas.

Este modelo de desenvolvimento não exige grandes investimentos em aprendizagem ou programação para definir as propriedades temporais dos eventos, ou o reconhecimento das transições de estado subjacentes do modelo de adaptador principal. Aqui estão alguns cenários nos quais este modelo de desenvolvimento é apropriado:

  1. Consultas históricas. A analista financeira Alice identifica padrões nos dados históricos de mercado executando consultas temporais em grandes conjuntos de dados. Neste caso, o fluxo de entrada tem um fim definido: a consulta deve terminar depois que o último elemento de dado é processado.

  2. Consultas ad hoc em origens dinâmicas. O administrador de servidor Bob suspeita de um ataque de negação de serviço. Ele identifica a origem do ataque através de uma série iterativa de consultas ad hoc nos fluxos de dados de rede que ele está monitorando.

  3. Inserido em aplicativos personalizados. O desenvolvedor de interface do usuário Charlie cria padrões de análise de gestos de mouse usando consultas temporais em eventos do Windows. O StreamInsight está inserido em aplicativos personalizados.

Em cada um desses casos, a consulta existe somente enquanto o aplicativo cliente precisa escutar os resultados.

Nesta seção

Esta seção contém os seguintes tópicos:

Considerações de programação para origens observáveis e enumeráveis, e coletores

Origens observáveis e enumeráveis, e coletores têm suporte somente em soluções incorporadas

As origens de eventos observáveis ou enumeráveis e coletores têm suporte somente no modelo de implantação hospedado, em que o servidor StreamInsight está incorporado no aplicativo. Você não pode usar origens de eventos observáveis ou enumeráveis e coletores com o modelo de implantação autônomo ou de servidor remoto. Para obter mais informações sobre modelos de implantação, consulte Modelos de implantação do servidor StreamInsight.

Os recursos da API oferecem suporte a requisitos temporais do StreamInsight

A API permite fidelidade completa ao modelo temporal do StreamInsight, incluindo o enfileiramento de eventos CTI.

  • Sobre entradas observáveis e enumeráveis:

    • Os métodos To[Point|Interval|Edge]Stream methods encapsulam a entrada de dados como eventos StreamInsight e especificam características temporais dos dados de origem.

    • Um método auxiliar e propriedades da classe AdvanceTimeSettings ajudam o desenvolvedor a especificar a frequência na qual os eventos CTI são enfileirados, determinando portanto o dinamismo dos dados de entrada.

  • Sobre saídas observáveis e enumeráveis, o desenvolvedor pode escolher se incorpora informações de tempo na forma de eventos pontuais, de intervalo ou de borda através dos métodos To[Point|Interval|Edge]Observable e To[Point|Interval|Edge]Enumerable.

O suporte observável dependo do Microsoft .NET Framework 4

Se seu aplicativo usa origens ou coletores de evento que implementam as interfaces IObservable ou IObserver:

  • O aplicativo deve referenciar o assembly Microsoft.ComplexEventProcessing.Observable.dll.

  • O aplicativo deve se destinar ao .NET Framework 4 (e não ao .NET Framework 4 Client Profile).