Reactive Extensions (Rx) 入門(2) —— 安裝 Reactive Extensions

原文:http://www.atmarkit.co.jp/fdotnet/introrx/introrx_01/introrx_01_02.html

作者:河合 宜文


安裝方法

關於 Rx 的安裝,可以通過 Reactive Extensions (Rx) 的主頁 的直接下載安裝,當然也可以利用 NuGet 導入 dll (http://nuget.org/packages/Rx-Main) [譯註: NuGet 是VS集成的在線 dll部署工具,非常方便]。Rx 不管是 Installer 還是 NuGet 安裝的,都有 Stable(穩定版) 和 Experimental(實驗版) 兩種。

Stable版是API中方法名等不會再變更而Experimental版則是在Stable版中加入了一些實驗性的方法等。例如:C# 5.0中新增特性await/async關鍵字、Expand方法等只在Experimental版中有。只在Experimental版中有的方法會以[ExperimentalAttribute]特性標識,在Visual Studio中通過metadata的表示可以區分出來。因此,在利用Experimental版的時候,這些加上[ExperimentalAttribute]特性標識的方法將來方法名,參數列表還是有可能發生變化的,需要留意。

另外,Experimental版在現在Developer Preview(開發者預覽版)中的.NET Framework 4.5和WinRT(Windows 8 運行環境)中已經包含了。C#5.0中特別是針對異步編程比較大的變化策略,已經在反映在Experimental版中。


Assembly分類
Rx的Assembly按照如下功能劃分。

程序集名NuGet Package名(*1功能
System.ReactiveRx-Main基本Core API
System.Reactive.Windows.FormsRx-WinFormsWindowsForm中使用的 ControlScheduler類(*2)和擴展方法
System.Reactive.Windows.ThreadingRx-WPF
Rx-Silverlight
WPF/Silverlight中使用的DispatcherScheduler類(*2)和擴展方法
System.Reactive.ProvidersRx-ProvidersIQbservable接口和其他類庫(*3
Microsoft.Reactive.TestingRx-TestingUnitTest和Mockup
Rx的Assembly一覽
Rx的Assembly文件、一般放在「C:\Program Files\Microsoft Reactive Extensions SDK」(32bit版),而64bit版則是放在「C:\Program Files (x86)\Microsoft Reactive Extensions SDK」)
*1 一覽中提到的Package是指Stable版,Experimental版的時候則帶有「_Experimental」比如:「Rx_Experimental-Main」
*2 Scheduler 是基於Rx的時間和線程管理的類。ControlScheduler類是對於WinForm及控件進行BeginInvoke調用,DispatcherScheduler類是對Dispatcher進行BeginInvoke。
*3 「IQbservable」接口名取自「Queryable Observable」。表達式樹可以生成一個 Observable 對象。IObservable 接口和 IQbservable 接口的關係就和 IEnumerable 接口和 IQueryable 接口關係相當。
作爲Core必須引用 System.Reactive 程序集,除此之外可以按需添加引用,比如:如果要使用WPF,那麼還要引用 System.Reactive.Windows.Threading。
Windows Phone 7 SDK 裏集成的標準的 Rx 程序集則和上面說的有些不同:
程序集名功能
System.ObservableIObservable<T>/IObserver<T>接口
Microsoft.Phone.ReactiveCore API和DispatcherScheduler類
Windows Phone 7 SDK的程序集一覽
 Windows Phone 7 裏也可以通過直接引用 Data Developer Center 裏發佈的程序集來使用 Rx,但是注意一下兩者的區別,Data Developer Center 版是爲了以後,API 有些是不同的。這些差異比如:命名空間不同,類名也有些不同,方法的參數列表也不同,有增加的方法也有刪除的方法。總的來說,Data Developer Center 版應該提供了高性能和更強大功能的。
如果更加重視是否是使用標準程序集且不需要額外引用程序集,那麼直接使用 Microsoft.Phone.Reactive;如果希望能在 WPF,Sliverlight 中移植,那麼就選擇 Data Developer Center 版本好了。

相關的庫
Javascript 版本並不包含在Install 中,但可以從 Rx 主頁最下方下載 ZIP 得到。庫的主體是 Rx.js ,除此之外還有 jQuery 和 prototype.js。

命名空間分類
Rx 主要是以擴展方法爲中心的,如果沒有正確的使用 using/Import 導入命名空間則無法使用。下面例舉主要的命名空間以及代表的功能和類。
名前空間功能點
System

Subscribe訂閱 IObservable 接口使用的Lambda表達式的擴展方法

System.Reactive

主要接口和一些基本類

System.Reactive.Concurrency實現 IScheduler 接口的一些類
System.Reactive.Disposables實現 IDisposable 接口的一些類
System.Reactive.Joins利用 Observable.And/Observable.Then 方法進行Join操作的類
System.Reactive.LinqRx 主要的命名空間,Observable 類和IObservable接口的一些擴展方法
System.Reactive.Subjects

實現 ISubject 接口(實現 Rx 語義的事件)的一些類

System.Reactive.Threading.Tasks

Task 相互轉換的擴展方法

Rx 的命名空間和代表性的功能以及類


另外,Windows Phone 中,Microsoft.Phone.Reactive 程序集裏的 Rx 全部在 Microsoft.Phone.Reactive 命名空間下。

【系列文章】
Reactive Extensions (Rx) 入門(1) —— Reactive Extensions 概要
Reactive Extensions (Rx) 入門(2) —— 安裝 Reactive Extensions
Reactive Extensions (Rx) 入門(3) —— Rx的事件編程①
發佈了143 篇原創文章 · 獲贊 10 · 訪問量 127萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章