閱讀493 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《C#並發編程經典實例》—— Rx基礎

LINQ 是 對 序 列 數 據 進 行 查 詢 的 一 係 列 語 言 功 能。 內 置 的 LINQ to Objects( 基 於 IEnumerable<T>) 和 LINQ to Entities( 基 於 IQueryable<T>) 是 兩 個 最 常 用 的 LINQ 提 供 者。另外還有很多提供者,並且大多數都采用相同的基本架構。查詢是延後執行(lazily evaluated)的,隻有在需要時才會從序列中獲取數據。從概念上講,這是一種拉取模式。 在查詢過程中數據項是被逐個拉取出來的。

Reactive Extensions(Rx)把事件看作是依次到達的數據序列。因此,將 Rx 認作是 LINQ to events( 基 於 IObservable<T>) 也 是 可 以 的, 它 與 其 他 LINQ 提 供 者 的 主 要 區 別 在 於, Rx 采用“推送”模式。就是說,Rx 的查詢規定了在事件到達時程序該如何響應。Rx 在 LINQ 的基礎上構建,增加了一些功能強大的操作符,作為擴展方法。

本章介紹一些更常用的 Rx 操作。需要注意的是,所有的 LINQ 操作都可以在 Rx 中使用。 從概念上看,過濾(Where)、投影(Select)等簡單操作,和其他 LINQ 提供者的操作是 一樣的。本章不介紹那些常見的 LINQ 操作,而將重點放在 Rx 在 LINQ 基礎上增加的新 功能,尤其是與時間有關的功能。

要使用 Rx,需要在應用中安裝一個 NuGet 包 Rx-Main。支持 Reactive Extensions 的平台非 常豐富。

  1. 轉換 .NET 事件
  2. 發通知給上下文
  3. 用窗口和緩衝對事件分組
  4. 用限流和抽樣抑製事件流
  5. 超時

最後更新:2017-05-23 11:02:43

  上一篇:go  剖析Disruptor:為什麼會這麼快?(二)神奇的緩存行填充
  下一篇:go  我心目中的鄧麗君