Successfully reported this slideshow.

Reactive Extensions v2.0

3

Share

1 of 17
1 of 17

More Related Content

More from Yoshifumi Kawai

Related Books

Free with a 14 day trial from Scribd

See all

Reactive Extensions v2.0

  1. 1. Reactive Extensions v 2.0 (+ Silverlight 5) @neuecc 2012/3/31 #slintky
  2. 2. Profile  Twitter => @neuecc  HN => neuecc  読むときは“のいえ”と読ませてます  サイトのドメイン(特に意味はない)を繋いだだけ で、識別子になればそれだけでいいと思って発音考 えてなかったので割とアレ  Microsoft MVP for Visual C#(2011/4-)  明日、期限切れor更新の勧告が!  というわけで若干そわそわ中
  3. 3. サイト  http://neue.cc/  C#とかLINQ  配色がアレ
  4. 4. linq.js  http://linqjs.codeplex.com/  LINQのJavaScript移植
  5. 5. ReactiveProperty  http://reactiveproperty.codeplex.com/  Rxスタイルのバインディング補助ライブラリ  .NET4/SL5/SL5/WP7.1 対応
  6. 6. ReactiveOAuth  http://reactiveoauth.codeplex.com/  Rxを使った非同期系OAuthライブラリ  .NET4/SL5/SL5/WP7.1 対応
  7. 7. What is Rx?
  8. 8. LINQ to Events LINQ to Asynchronous
  9. 9. Demo
  10. 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. 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のみ利用可
  12. 12. Demo
  13. 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. 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 });
  15. 15. Demo
  16. 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. 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

×