Reactive Extensions v2.0

2,675 views

Published on

#slintky

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,675
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
22
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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 EventsLINQ 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 SingleValuevar 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 MultiValueEnumerable.Range(1, 10) .Select(_ => WebRequest.Create().DownloadString()) .ForEach(s => { // Action });// Asynchronous MultiValueObservable.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

×