Download - Reactive Extensions v2.0
Reactive Extensions v 2.0
(+ Silverlight 5)
@neuecc
2012/3/31 #slintky
Twitter => @neuecc
HN => neuecc
読むときは“のいえ”と読ませてます
サイトのドメイン(特に意味はない)を繋いだだけで、識別子になればそれだけでいいと思って発音考えてなかったので割とアレ
Microsoft MVP for Visual C#(2011/4-)
明日、期限切れor更新の勧告が!
というわけで若干そわそわ中
Profile
http://linqjs.codeplex.com/
LINQのJavaScript移植
linq.js
http://reactiveproperty.codeplex.com/
Rxスタイルのバインディング補助ライブラリ
.NET4/SL5/SL5/WP7.1 対応
ReactiveProperty
http://reactiveoauth.codeplex.com/
Rxを使った非同期系OAuthライブラリ
.NET4/SL5/SL5/WP7.1 対応
ReactiveOAuth
What is Rx?
LINQ to Events
LINQ to Asynchronous
Demo
History
Rx in DevLabs
(2009/11/18)
Rx v1.0
(2011/1/21) Rx v2.0 Beta
(2011/1/21)
RxJS 2.0 Beta
(2011/12/30)
Phone.Reactive
RxJS v1.0
(2010/3/18)
Rx Experimental
in BCL???
(Future)
mono-reactive
準標準、的なライブラリ
Microsoftが開発、配布しているものだけど標準ライブラリではない
将来的に標準入りするかはまだ分からない
.NET3.5,4/SL3,4,5/WP7/WinRT/JavaScript 対応
Portable Library対応
※ただしRx v2.0は.NET4.5/SL5/WinRT/WP7.1のみ
Rx v1.0 ExperimentalはRx v2.0 Betaに吸収された
SilverightではRx v2.0 BetaはSL5のみ利用可
位置付け
Demo
Rxは一つの値も複数の値も同じに扱ってしまう
利点でもあり欠点でもある
SingleValue + Asynchronous
// Synchronous SingleValue var x = GetValue(); // Asynchronous SingleValue(C# 5.0) var x = await GetValueAsync(); // Asynchronous SingleValue(C# 4.0) GetValueAsync.ContinueWith(x => /* Action */); // TPL // Asynchronous Single or MultiValue(C# 4.0) GetValueAsync.Subscribe(x => /* Action */); // Rx
非同期におけるMultiValueの元はイベント(例えばテキストチェンジ)だったりタイマーだったり
MultiValue + Asynchronous
// Synchronous MultiValue Enumerable.Range(1, 10) .Select(_ => WebRequest.Create().DownloadString()) .ForEach(s => { // Action }); // Asynchronous MultiValue Observable.Interval(TimeSpan.FromSeconds(1)) .Select(_ => WebRequest.Create().DownloadStringAsync()) .Subscribe(s => { // Action });
Demo
例外処理、Retry処理、Timeout処理などRxの持つパワーは非常に強力
C# 5.0と合わせるなら一時的にTask->Rx変換して、それをawaitするなどで利用可能
但しRetry系はObservable.DeferやFromAsyncを被せておかないと悲惨なことに……!
FromAsyncはRx v2.0で初お目見え、Taskとの連携用
Power of Rx
var res = await Observable.FromAsync(() => WebRequest.Create().GetResponseAsync()) .Retry();
Reactive Extensions
http://msdn.microsoft.com/en-us/devlabs/gg577609
NuGetでRx v2.0を落とすときは-Preをつける
Install-Package Rx-Main –Pre
RxJSの各種ライブラリバインディング
https://github.com/Reactive-Extensions
本体はDownload CenterかNuGetで
@ITで連載やってます(絶賛原稿遅延中)
http://www.atmarkit.co.jp/fdotnet/introrx/index/index.
html
link, linq, lync