SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates
koichik
 
Node-v0.12の新機能について
Node-v0.12の新機能についてNode-v0.12の新機能について
Node-v0.12の新機能について
shigeki_ohtsu
 

La actualidad más candente (20)

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

Destacado

Talk on .NET assemblies
Talk on .NET assembliesTalk on .NET assemblies
Talk on .NET assemblies
Vidya Agarwal
 
Talk on windows azure
Talk on windows azureTalk on windows azure
Talk on windows azure
Vidya Agarwal
 

Destacado (11)

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

Similar a Reactive Extensions v2.0

実践 Reactive Extensions
実践 Reactive Extensions実践 Reactive Extensions
実践 Reactive Extensions
Shin Ise
 
R5 3 type annotation
R5 3 type annotationR5 3 type annotation
R5 3 type annotation
EIICHI KIMURA
 

Similar a Reactive Extensions v2.0 (20)

RxSwift
RxSwiftRxSwift
RxSwift
 
Rx Showcase
Rx ShowcaseRx Showcase
Rx Showcase
 
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
 
Sansan様 登壇資料
Sansan様 登壇資料Sansan様 登壇資料
Sansan様 登壇資料
 
ReactiveSignalR
ReactiveSignalRReactiveSignalR
ReactiveSignalR
 
実践 Reactive Extensions
実践 Reactive Extensions実践 Reactive Extensions
実践 Reactive Extensions
 
Rx swift,Repro framewolrk
Rx swift,Repro framewolrkRx swift,Repro framewolrk
Rx swift,Repro framewolrk
 
Nginx
NginxNginx
Nginx
 
クラスメソッド第4回登壇資料 RxRealm
クラスメソッド第4回登壇資料 RxRealmクラスメソッド第4回登壇資料 RxRealm
クラスメソッド第4回登壇資料 RxRealm
 
node-handlersocket
node-handlersocketnode-handlersocket
node-handlersocket
 
Rx入門
Rx入門Rx入門
Rx入門
 
JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)
 
R5 3 type annotation
R5 3 type annotationR5 3 type annotation
R5 3 type annotation
 
serverless
serverlessserverless
serverless
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
LL2021 Java update
LL2021 Java updateLL2021 Java update
LL2021 Java update
 
How to Make Own Framework built on OWIN
How to Make Own Framework built on OWINHow to Make Own Framework built on OWIN
How to Make Own Framework built on OWIN
 
RxSwift x APIKit
RxSwift x APIKitRxSwift x APIKit
RxSwift x APIKit
 
Reactつかってみた
ReactつかってみたReactつかってみた
Reactつかってみた
 
react_rails
react_railsreact_rails
react_rails
 

Más de Yoshifumi Kawai

ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
Yoshifumi Kawai
 
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニーUnity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Yoshifumi Kawai
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
 
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Yoshifumi Kawai
 

Más de Yoshifumi Kawai (20)

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

Reactive Extensions v2.0

  • 1. Reactive Extensions v 2.0 (+ Silverlight 5) @neuecc 2012/3/31 #slintky
  • 2. Profile  Twitter => @neuecc  HN => neuecc  読むときは“のいえ”と読ませてます  サイトのドメイン(特に意味はない)を繋いだだけ で、識別子になればそれだけでいいと思って発音考 えてなかったので割とアレ  Microsoft MVP for Visual C#(2011/4-)  明日、期限切れor更新の勧告が!  というわけで若干そわそわ中
  • 8. LINQ to Events LINQ to Asynchronous
  • 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のみ利用可
  • 12. Demo
  • 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 });
  • 15. Demo
  • 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