Más contenido relacionado
La actualidad más candente (20)
Similar a Reactive Extensions v2.0 (20)
Más de Yoshifumi Kawai (20)
Reactive Extensions v2.0
- 2. Profile
Twitter
=> @neuecc
HN => neuecc
読むときは“のいえ”と読ませてます
サイトのドメイン(特に意味はない)を繋いだだけ
で、識別子になればそれだけでいいと思って発音考
えてなかったので割とアレ
Microsoft MVP for Visual C#(2011/4-)
明日、期限切れor更新の勧告が!
というわけで若干そわそわ中
- 10. History in BCL???
(Future)
RxJS 2.0 Beta
(2011/12/30)
mono-reactive
Rx v1.0
(2011/1/21) Rx v2.0 Beta
(2011/1/21)
Phone.Reactive Rx Experimental
RxJS v1.0
(2010/3/18)
Rx in DevLabs
(2009/11/18)
- 11. 位置付け
準標準、的なライブラリ
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のみ利用可
- 13. SingleValue + Asynchronous
Rxは一つの値も複数の値も同じに扱ってしまう
利点でもあり欠点でもある
// 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
- 14. MultiValue + Asynchronous
非同期におけるMultiValueの元はイベント(例えば
テキストチェンジ)だったりタイマーだったり
// 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
});
- 16. Power of Rx
例外処理、Retry処理、Timeout処理などRxの持つ
パワーは非常に強力
C# 5.0と合わせるなら一時的にTask->Rx変換して、
それをawaitするなどで利用可能
但しRetry系はObservable.DeferやFromAsyncを被せ
ておかないと悲惨なことに……!
FromAsyncはRx v2.0で初お目見え、Taskとの連携用
var res = await Observable.FromAsync(() =>
WebRequest.Create().GetResponseAsync())
.Retry();
- 17. link, linq, lync
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