Utilizzo di origini evento e sink di evento Observable ed enumerabili (StreamInsight)

StreamInsight supporta origini evento e sink di evento che implementano le interfacce IObservable e IEnumerable. Queste interfacce costituiscono i contratti generici predominanti in .NET Framework per effettuare il pull (IEnumerable) e il push (IObservable) dei dati tra i componenti di un'applicazione.

Mentre le interfacce IEnumerable e IEnumerator sono già familiari agli sviluppatori .NET, le interfacce IObservable e IObserver sono state introdotte più recentemente in .NET Framework 4. Il modello di sviluppo IObservable è basato sul modello di progettazione Observable/Observer. In questo modello di progettazione:

  • Un observer è qualsiasi oggetto che desidera ricevere una notifica quando viene modificato lo stato di un altro oggetto.

  • Per Observable si intende una sequenza basata su push per cui un altro oggetto potrebbe avere interesse.

In un'applicazione StreamInsight la sequenza Observable è l'origine evento. La query funge da observer dell'origine e presenta i risultati come Observable al sink di evento, che a sua volta è un observer della query come origine. Per ulteriori informazioni, vedere l'articolo relativo alla esplorazione del modello di progettazione Observer Design Pattern in MSDN.

Le attività per lo sviluppatore di applicazioni per abilitare questo modello di sviluppo sono minime:

  1. Fornire una classe che implementa l'interfaccia IObservable o IEnumerable come producer dell'evento.

  2. Fornire una classe che implementa l'interfaccia IObserver, o una classe che utilizza un'interfaccia IEnumerable, come consumer dell'evento.

  3. Associare questi oggetti alle query.

Questo modello di sviluppo non richiede una formazione più specializzata o maggiori investimenti nella programmazione per definire le proprietà temporali degli eventi, né la conoscenza delle transizioni di stato sottostanti del modello dell'adattatore di base. Di seguito vengono descritti alcuni scenari in cui questo modello di sviluppo è appropriato:

  1. Query storiche. L'analista finanziaria Alice identifica alcuni modelli nei dati cronologici di mercato eseguendo query temporali su set di dati di grandi dimensioni. In questo caso, il flusso di input ha una fine definita, in quanto la query deve finire al termine dell'elaborazione dell'ultimo dato.

  2. Query ad hoc su origini dinamiche. L'amministratore del server Bob sospetta un attacco Denial of Service. Bob identifica l'origine dell'attacco tramite una serie iterativa di query ad hoc sui flussi di dati di rete che sta monitorando.

  3. Incorporato in applicazioni personalizzate. Lo sviluppatore di interfacce utente Charlie progetta e analizza modelli di movimenti del mouse utilizzando query temporali su eventi di Windows. StreamInsight è incorporato nell'applicazione personalizzata.

In ognuno di questi casi, la query esiste solo se l'applicazione client resta in attesa dei risultati.

Contenuto della sezione

In questa sezione sono contenuti gli argomenti seguenti:

Considerazioni relative alla programmazione per origini e sink Observable ed enumerabili

Le origini e i sink Observable ed enumerabili sono supportati solo in soluzioni incorporate

Le origini evento e i sink Observable o enumerabili sono supportati solo nel modello di sviluppo di distribuzione hosted, in cui il server StreamInsight è incorporato nell'applicazione. Non è possibile utilizzare origini evento e sink Observable o enumerabili con il modello di sviluppo autonomo o server remoto. Per ulteriori informazioni sui modelli di distribuzione, vedere Modelli di distribuzione del server StreamInsight.

Le caratteristiche dell'API supportano i requisiti temporali di StreamInsight

L'API consente la fedeltà completa al modello temporale di StreamInsight, incluso l'accodamento di eventi CTI.

  • Negli input Observable ed enumerabili:

    • I metodi To[Point|Interval|Edge]Stream eseguono il wrapping dei dati di input come eventi di StreamInsight e specificano le caratteristiche temporali dei dati di origine.

    • Un metodo di supporto e le proprietà nella classe AdvanceTimeSettings consentono allo sviluppatore di specificare la frequenza di accodamento degli eventi CTI, in tal modo determinando la dinamicità dei dati di input.

  • Negli output Observable ed enumerabili lo sviluppatore può scegliere se incorporare o meno informazioni temporali sotto forma di eventi punto, intervallo o Edge tramite i metodi To[Point|Interval|Edge]Observable e To[Point|Interval|Edge]Enumerable.

Il supporto Observable dipende da Microsoft .NET Framework 4

Se nell'applicazione vengono utilizzati origini evento o sink che consentono di implementare le interfacce IObservable o IObserver:

  • L'applicazione deve fare riferimento all'assembly Microsoft.ComplexEventProcessing.Observable.dll.

  • L'applicazione deve avere come destinazione .NET Framework 4 e non .NET Framework 4 Client Profile.