使用可觀察與可列舉事件來源和事件接收 (StreamInsight)

StreamInsight 支援實作 IObservable 和 IEnumerable 介面的事件來源和事件接收。這些介面是 .NET Framework 中的主要一般用途合約,可在應用程式的元件之間提取 (IEnumerable) 和發送 (IObservable) 資料。

雖然 .NET 開發人員已經很熟悉 IEnumerable 和 IEnumerator 介面,不過 IObservable 和 IObserver 介面是最近才導入 .NET Framework 4 中。IObservable 開發模型是以可觀察/觀察器設計模式為基礎。在此設計模式中:

  • 觀察器是指當其他物件的狀態變更時,想要收到通知的任何物件。

  • 可觀察是以發送為基礎的序列,而且其他物件可能會在此序列中註冊感興趣的程度。

在 StreamInsight 應用程式中,可觀察就是事件來源。查詢會當做這個來源的觀察器,並將它的結果當做可觀察呈現給事件接收,而事件接收也做為來源查詢的觀察器。如需詳細資訊,請參閱 MSDN 上的瀏覽 Observer 設計模式

讓應用程式開發人員實現這個開發模型所需的工作非常少:

  1. 提供實作 IObservable 或 IEnumerable 介面的類別做為事件產生者。

  2. 提供實作 IObserver 介面的類別或取用 IEnumerable 的類別做為事件取用者。

  3. 將這些物件繫結至查詢。

這個開發模型不需要重大的學習或程式設計投資來定義事件的暫時屬性,或是核心配接器模型之基礎狀態轉換的感知。下面是一些適合使用這個開發模型的案例:

  1. 歷程記錄查詢:財務分析師 Alice 針對大型資料集執行暫時查詢,藉以識別歷程記錄行銷資料的模式。在此情況下,輸入資料流具有明確的結尾。在系統處理最後一個資料元素之後,查詢應該會結束。

  2. 針對即時來源進行的特定查詢:伺服器管理員 Bob 懷疑系統遭受阻斷服務攻擊。他針對所監視的網路資料資料流進行一系列反覆的特定查詢,藉以識別攻擊的來源。

  3. 內嵌在自訂應用程式中:使用者介面開發人員 Charlie 針對 Windows 事件使用暫時查詢,藉以分析滑鼠軌跡的模式。StreamInsight 會內嵌在自訂應用程式中。

在上述每種情況中,只要用戶端應用程式想要接聽結果,就會存在查詢。

本節內容

本節包含下列主題:

可觀察和可列舉來源與接收的程式設計考量

只有內嵌方案才支援可觀察和可列舉來源與接收

只有 StreamInsight 伺服器內嵌在應用程式中的主控部署模型才支援可觀察或可列舉事件來源與接收。您無法使用可觀察或可列舉事件來源與接收搭配獨立或遠端伺服器部署模型。如需有關部署模型的詳細資訊,請參閱<StreamInsight 伺服器部署模型>。

API 功能支援 StreamInsight 的暫時需求

此 API 允許完整不失真的 StreamInsight 暫時模型,包括將 CTI 事件加入佇列。

  • 在可觀察和可列舉的輸入上:

    • To[Point|Interval|Edge]Stream 方法會將輸入資料包裝成 StreamInsight 事件並且指定來源資料的暫時特性。

    • AdvanceTimeSettings 類別的 Helper 方法和屬性可協助開發人員指定將 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 Client Profile) 為目標。