天天看點

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.Reactive Rx-Main 基本Core API
System.Reactive.Windows.Forms Rx-WinForms WindowsForm中使用的 ControlScheduler類(*2)和擴充方法
System.Reactive.Windows.Threading

Rx-WPF

Rx-Silverlight

WPF/Silverlight中使用的DispatcherScheduler類(*2)和擴充方法
System.Reactive.Providers Rx-Providers IQbservable接口和其他類庫(*3)
Microsoft.Reactive.Testing Rx-Testing UnitTest和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.Observable IObservable<T>/IObserver<T>接口
Microsoft.Phone.Reactive Core API和DispatcherScheduler類
Reactive Extensions (Rx) 入門(2) —— 安裝 Reactive Extensions
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.Linq Rx 主要的命名空間,Observable 類和IObservable接口的一些擴充方法
System.Reactive.Subjects 實作 ISubject 接口(實作 Rx 語義的事件)的一些類
System.Reactive.Threading.Tasks Task 互相轉換的擴充方法
Reactive Extensions (Rx) 入門(2) —— 安裝 Reactive Extensions
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的事件程式設計①

繼續閱讀