《C#併發程式設計經典例項》—— Rx基礎
阿新 • • 發佈:2018-12-23
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 的平臺非 常豐富。