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:
Fornecer uma classe que implementa a interface IObservable ou IEnumerable como o produtor de evento.
Fornecer uma classe que implementa a interface IObserver ou uma classe que consome um IEnumerable como o consumidor de evento.
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:
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.
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.
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:
Exemplo completo de uma origem de evento enumerável e de um coletor de eventos (StreamInsight)
Suporte à API para IObservable e IEnumerable no StreamInsight
Mais informações sobre interfaces que IObservable e IEnumerable no StreamInsight
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).