SlideShare a Scribd company logo
Reactive Extensions v 2.0
         (+ Silverlight 5)

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

More Related Content

PDF
C#次世代非同期処理概観 - Task vs Reactive Extensions
PPTX
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
PDF
Reactive Extensionsで非同期処理を簡単に
PDF
Deep Dive async/await in Unity with UniTask(UniRx.Async)
PPTX
async/await のしくみ
PPTX
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
PDF
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
PDF
社内勉強会資料(Varnish Module)
C#次世代非同期処理概観 - Task vs Reactive Extensions
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
Reactive Extensionsで非同期処理を簡単に
Deep Dive async/await in Unity with UniTask(UniRx.Async)
async/await のしくみ
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
社内勉強会資料(Varnish Module)

What's hot (20)

PDF
Project Loom - 限定継続と軽量スレッド -
PPTX
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
PDF
VarnishではじめるESI
PDF
Varnish 4.0 Release Party in Tokyo発表資料
PDF
Project Loom + Project Panama
PDF
Rx java x retrofit
PDF
東京Node学園#3 Domains & Isolates
PDF
MlnagoyaRx
PPTX
WebRTC multitrack / multistream
PDF
OPcache の最適化器の今
PDF
TypeScript 言語処理系ことはじめ
PDF
Node-v0.12の新機能について
PPT
CPANの依存モジュールをもう少し正しく検出したい
PDF
An Internal of LINQ to Objects
PDF
Openresty
PDF
tokyo.vcl発表資料(VarnishCache3.0新機能とVUPの仕方)
PDF
Clojureによるログ収集と解析
PDF
静的サイトどこにする?
PDF
Varnishのログの眺め方
PPTX
CMSとPerlで遊ぼう
Project Loom - 限定継続と軽量スレッド -
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
VarnishではじめるESI
Varnish 4.0 Release Party in Tokyo発表資料
Project Loom + Project Panama
Rx java x retrofit
東京Node学園#3 Domains & Isolates
MlnagoyaRx
WebRTC multitrack / multistream
OPcache の最適化器の今
TypeScript 言語処理系ことはじめ
Node-v0.12の新機能について
CPANの依存モジュールをもう少し正しく検出したい
An Internal of LINQ to Objects
Openresty
tokyo.vcl発表資料(VarnishCache3.0新機能とVUPの仕方)
Clojureによるログ収集と解析
静的サイトどこにする?
Varnishのログの眺め方
CMSとPerlで遊ぼう
Ad

Viewers also liked (11)

PDF
20110126 azure table in mono meeting
DOC
IKT standardi 9-12 razred
PPT
Talk on .NET assemblies
PPT
Talk on windows azure
PPSX
Viseo intro Prive Public Cloud vs hosting
PPTX
Windows Azure Web Sites, Cloud Services ou Virtual Machines ? Quelles technol...
PDF
linq.js - Linq to Objects for JavaScript
PDF
How to make the Fastest C# Serializer, In the case of ZeroFormatter
PDF
Modern C# Programming 現代的なC#の書き方、ライブラリの選び方
PPTX
OVH Summit 2016 - Map as a Service by Löic Ortola
PDF
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
20110126 azure table in mono meeting
IKT standardi 9-12 razred
Talk on .NET assemblies
Talk on windows azure
Viseo intro Prive Public Cloud vs hosting
Windows Azure Web Sites, Cloud Services ou Virtual Machines ? Quelles technol...
linq.js - Linq to Objects for JavaScript
How to make the Fastest C# Serializer, In the case of ZeroFormatter
Modern C# Programming 現代的なC#の書き方、ライブラリの選び方
OVH Summit 2016 - Map as a Service by Löic Ortola
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
Ad

Similar to Reactive Extensions v2.0 (20)

PDF
RxSwift
PDF
Rx Showcase
PDF
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
PDF
Sansan様 登壇資料
PDF
ReactiveSignalR
PDF
Rx swift,Repro framewolrk
PDF
PDF
クラスメソッド第4回登壇資料 RxRealm
PDF
node-handlersocket
PDF
Rx入門
PDF
JavaScript Tips 2015(PDF 版)
PDF
R5 3 type annotation
PDF
serverless
PDF
ATN No.2 Scala事始め
PPTX
LL2021 Java update
PDF
How to Make Own Framework built on OWIN
PDF
RxSwift x APIKit
PPTX
Reactつかってみた
PDF
react_rails
PDF
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
RxSwift
Rx Showcase
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
Sansan様 登壇資料
ReactiveSignalR
Rx swift,Repro framewolrk
クラスメソッド第4回登壇資料 RxRealm
node-handlersocket
Rx入門
JavaScript Tips 2015(PDF 版)
R5 3 type annotation
serverless
ATN No.2 Scala事始め
LL2021 Java update
How to Make Own Framework built on OWIN
RxSwift x APIKit
Reactつかってみた
react_rails
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方

More from Yoshifumi Kawai (20)

PDF
A quick tour of the Cysharp OSS
PDF
A Brief History of UniRx/UniTask, IUniTaskSource in Depth
PDF
Building the Game Server both API and Realtime via c#
PDF
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
PDF
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
PDF
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
PDF
Implements OpenTelemetry Collector in DotNet
PDF
Deep Dive async/await in Unity with UniTask(EN)
PDF
The Usage and Patterns of MagicOnion
PDF
True Cloud Native Batch Workflow for .NET with MicroBatchFramework
PDF
Memory Management of C# with Unity Native Collections
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
PDF
Binary Reading in C#
PDF
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
PPTX
RuntimeUnitTestToolkit for Unity(English)
PPTX
RuntimeUnitTestToolkit for Unity
PDF
NextGen Server/Client Architecture - gRPC + Unity + C#
PDF
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
PDF
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
PDF
Photon Server Deep Dive - View from Implmentation of PhotonWire, Multiplayer ...
A quick tour of the Cysharp OSS
A Brief History of UniRx/UniTask, IUniTaskSource in Depth
Building the Game Server both API and Realtime via c#
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Implements OpenTelemetry Collector in DotNet
Deep Dive async/await in Unity with UniTask(EN)
The Usage and Patterns of MagicOnion
True Cloud Native Batch Workflow for .NET with MicroBatchFramework
Memory Management of C# with Unity Native Collections
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Binary Reading in C#
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
RuntimeUnitTestToolkit for Unity(English)
RuntimeUnitTestToolkit for Unity
NextGen Server/Client Architecture - gRPC + Unity + C#
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Photon Server Deep Dive - View from Implmentation of PhotonWire, Multiplayer ...

Reactive Extensions v2.0