SlideShare una empresa de Scribd logo
1 de 22
Bienvenido al mundo reactivo con:
Reactive Extensions (Rx)




                        Por Fernando Escolar
reactive
                                             extensions
  contexto


   ui
event-based
                                               the cloud
          client
        application



                      asynchronous communication




                                                               @SecondNug
                                                           @fernandoescolar
reactive
                                extensions
    reactive programming
• Basada en flujos de datos y propagación
  de cambios.
    Tradicional      Reactiva




                                                 @SecondNug
                                             @fernandoescolar
reactive
                                       extensions
      definición

• Microsoft Live Labs - Erik Meijer
 “Rx es una librería para componer programas asíncronos y
 basados en eventos usando colecciones observables”


• Dualidad matemática entre el patrón
  iterator y el observer.



                                                           @SecondNug
                                                       @fernandoescolar
reactive
                                       extensions
      definición

• Microsoft Live Labs - Erik Meijer
 “Rx es una librería para componer programas asíncronos y
 basados en eventos usando colecciones observables”
         Rx = Observables + Linq + Schedulers

• Dualidad matemática entre el patrón
  iterator y el observer.



                                                           @SecondNug
                                                       @fernandoescolar
reactive
              extensions
instalación

 Nuget           Web




                               @SecondNug
                           @fernandoescolar
reactive
                  extensions
patrón iterator




                                   @SecondNug
                               @fernandoescolar
reactive
                  extensions
patrón observer




                                   @SecondNug
                               @fernandoescolar
reactive
                          extensions
formula



 Rx = Observables + Linq + Schedulers




                                            @SecondNug
                                        @fernandoescolar
reactive
                           extensions
     sujetos

 ISubject<T>:
     IObservable<T>,IObserver<T>


Tipos:
    • Subject<T>
    • ReplaySubject<T>
    • BehaviorSubject<T>
    • AsyncSubject<T>
                                            @SecondNug
                                        @fernandoescolar
reactive
                                           extensions
      Rx vs. events
Sujetos:                             Eventos:
Declaración                          Declaración
   ISubject<string> Changed =           event Action<string> Notified;
      new Subject<string>();

Suscripción                          Suscripción
  var disposable =                      Action<string> OnNotified =
    Changed.Subscribe(                       s => Console.WriteLine(s);
       s => Console.WriteLine(s));      Notified += OnNotified;

Publicación                          Publicación
   Changed.OnNext ("hello");            Notified("hello");

Desuscripción                        Desuscripción
    disposable.Dispose();               Notified -= OnNotified;



                                                                  @SecondNug
                                                              @fernandoescolar
reactive
                               extensions
     observable: creadores
•   Create                 •   Never
•   CreateWithDisposable   •   Range
•   Defer                  •   Repeat
•   Empty                  •   Return
•   FromAsyncPattern       •   Start
•   FromEvent              •   StartWith
•   Generate               •   Throw
•   GenerateInSequence     •   Timer
•   Interval               •   Using
                                                @SecondNug
                                            @fernandoescolar
reactive
                          extensions
formula



 Rx = Observables + Linq + Schedulers




                                            @SecondNug
                                        @fernandoescolar
reactive
                              extensions
     scheduler
• Dispatcher: Programa en el dispatcher actual.
• NewThread: Lo programa en un nuevo hilo.
• ThreadPool: Lo encola en la threadPool.
• TaskPool: En la Pool de task (Parallel)
• Inmediate: Lo ejecuta inmediatamente, sin
  programar.
• CurrentThread: La programa para ejecutarse
  en el hilo actual.

                                               @SecondNug
                                           @fernandoescolar
reactive
                          extensions
formula



 Rx = Observables + Linq + Schedulers




                                            @SecondNug
                                        @fernandoescolar
reactive
                                                 extensions
        observable: operadores i.
•   Amb                •   Merge                  •   SubscribeOn
•   Asynchronous       •   ObserveOn              •   SubscribeOnDispatcher
•   Buffer             •   ObserveOnDispatcher    •   Switch
•   BufferWithTime     •   OnErrorResumeNext      •   Synchronize
•   Catch              •   Remotable
                                                  •   Take
•   CombineLatest      •   RemoveTimeInterval
•   Concat             •   RemoveTimestamp        •   TakeWhile
•   Delay              •   Repeat                 •   Throttle
•   Dematerialize      •   Retry                  •   TimeInterval
•   Do                 •   Sample                 •   Timeout
•   Finally            •   Scan                   •   Timestamp
•   GroupBy            •   Select                 •   Until
•   Hide               •   SelectMany             •   WaitUntil
•   HoldUntilChanged   •   Skip                   •   Where
•   Let                •   SkipWhile              •   Yield
•   Materialize        •   SkipUntil
                                                  •   Zip



                                                                        @SecondNug
                                                                    @fernandoescolar
reactive
                               extensions
observable: operadores ii.
•   Evaluadores:           •   Uniones:
        Agregarte               Join
        And                     Then
        Contains
        Count
        First             •   Otras:
        FirstOrDefault          Prune
        GetEnumerator           Publish
        Last                    Record
        LastOrDefault
        Latest                  Replay
        LatestValue
        LongCount
        MostRecent
        MostRecentValue
        Next
        NextValue
        Single
        SingleOrDefault
        ToEnumerable




                                                @SecondNug
                                            @fernandoescolar
reactive
                                           extensions
      Rx vs. events
Sujetos:                             Eventos:
Declaración                          Declaración
   ISubject<string> Changed =           event Action<string> Notified;
      new Subject<string>();

Suscripción                          Suscripción
  var disposable =                      Action<string> OnNotified =
    Changed.Subscribe(                       s => Console.WriteLine(s);
       s => Console.WriteLine(s));      Notified += OnNotified;

Publicación                          Publicación
   Changed.OnNext ("hello");            Notified("hello");

Desuscripción                        Desuscripción
    disposable.Dispose();               Notified -= OnNotified;



                                                                  @SecondNug
                                                              @fernandoescolar
reactive
                           extensions
     Linq2Events

Convertir un cualquier evento en observable:




                                            @SecondNug
                                        @fernandoescolar
reactive
                             extensions
     Ejemplos

Ejemplos útiles en diversas aplicaciones:

- WPF Drag ‘n Drop
- Reactive EventAggregator
- Twitter


                                              @SecondNug
                                          @fernandoescolar
reactive
                 extensions
ruegos y preguntas




                                  @SecondNug
                              @fernandoescolar
reactive
                                                             extensions
           despedida
                         ¡Muchas gracias a todos!
•   Agradecimientos:
      SecondNug y concretamente a Alfredo Fernández
      Pablo Bouzada
      Javier Jimenez (rx: first contact)

•   Enlaces de interés
        http://en.wikipedia.org/wiki/Reactive_programming
        http://en.wikipedia.org/wiki/Observer_pattern
        http://en.wikipedia.org/wiki/Iterator_pattern
        http://www.dofactory.com/Patterns/PatternIterator.aspx
        http://www.minddriven.de/index.php/technology/dot-net/reactive-framework-rx-first-look
        http://www.silverlightshow.net/items/Using-Reactive-Extensions-in-Silverlight.aspx
        http://leecampbell.blogspot.com/2010/08/reactive-extensions-for-net.html
        http://rxwiki.wikidot.com/101samples



                                                                                         @SecondNug
                                                                                     @fernandoescolar

Más contenido relacionado

Destacado (16)

Agire professionale e competenze2
Agire professionale e competenze2Agire professionale e competenze2
Agire professionale e competenze2
 
Online grammar checkers
Online grammar checkersOnline grammar checkers
Online grammar checkers
 
Tipos de clavados
Tipos de clavadosTipos de clavados
Tipos de clavados
 
Sin and Salvation
Sin and SalvationSin and Salvation
Sin and Salvation
 
Project proposal
Project proposalProject proposal
Project proposal
 
360 On The Park
360 On The Park360 On The Park
360 On The Park
 
es guapo
es guapoes guapo
es guapo
 
Curency album
Curency albumCurency album
Curency album
 
my trip to Belfast
my trip to Belfastmy trip to Belfast
my trip to Belfast
 
ChampioNZ Week 21 Bulletin
ChampioNZ Week 21 Bulletin ChampioNZ Week 21 Bulletin
ChampioNZ Week 21 Bulletin
 
Bullying at school
Bullying at schoolBullying at school
Bullying at school
 
Linux 源代码分析 消息管理
Linux 源代码分析 消息管理Linux 源代码分析 消息管理
Linux 源代码分析 消息管理
 
Aprendiendo sobre el cuerpo humano
Aprendiendo sobre el cuerpo humanoAprendiendo sobre el cuerpo humano
Aprendiendo sobre el cuerpo humano
 
Figuras geométricas
Figuras geométricasFiguras geométricas
Figuras geométricas
 
Presentacion la tics
Presentacion la ticsPresentacion la tics
Presentacion la tics
 
Social Issues
Social IssuesSocial Issues
Social Issues
 

Similar a Introducción a Reactive Extensions (Rx

Programación Reactiva con RxJava
Programación Reactiva con RxJavaProgramación Reactiva con RxJava
Programación Reactiva con RxJavaParadigma Digital
 
Equipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma DigitalEquipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma DigitalParadigma Digital
 
React Hooks ¿Por donde empezar?
React Hooks ¿Por donde empezar?React Hooks ¿Por donde empezar?
React Hooks ¿Por donde empezar?Adrian Diaz Cervera
 
Migrando Rails Apps entre Cloud y Bare Metal Servers
Migrando Rails Apps entre Cloud y Bare Metal ServersMigrando Rails Apps entre Cloud y Bare Metal Servers
Migrando Rails Apps entre Cloud y Bare Metal ServersEdwin Cruz
 
Introduccion al Akelos Php Framework
Introduccion al Akelos Php FrameworkIntroduccion al Akelos Php Framework
Introduccion al Akelos Php FrameworkBermi Ferrer
 
Evaluacion de proyectos informaticos
Evaluacion de proyectos informaticosEvaluacion de proyectos informaticos
Evaluacion de proyectos informaticosFreddy Cumbicus
 
Curso de javascript y node avanzado
Curso de javascript y node avanzadoCurso de javascript y node avanzado
Curso de javascript y node avanzadobrainybogota
 

Similar a Introducción a Reactive Extensions (Rx (11)

Programación Reactiva con RxJava
Programación Reactiva con RxJavaProgramación Reactiva con RxJava
Programación Reactiva con RxJava
 
Equipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma DigitalEquipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma Digital
 
React Hooks ¿Por donde empezar?
React Hooks ¿Por donde empezar?React Hooks ¿Por donde empezar?
React Hooks ¿Por donde empezar?
 
Migrando Rails Apps entre Cloud y Bare Metal Servers
Migrando Rails Apps entre Cloud y Bare Metal ServersMigrando Rails Apps entre Cloud y Bare Metal Servers
Migrando Rails Apps entre Cloud y Bare Metal Servers
 
Charla sobre Redux en Adalab
Charla sobre Redux en AdalabCharla sobre Redux en Adalab
Charla sobre Redux en Adalab
 
Introduccion al Akelos Php Framework
Introduccion al Akelos Php FrameworkIntroduccion al Akelos Php Framework
Introduccion al Akelos Php Framework
 
JVM Reactive Programming
JVM Reactive ProgrammingJVM Reactive Programming
JVM Reactive Programming
 
J hipster
J hipsterJ hipster
J hipster
 
Rx js
Rx jsRx js
Rx js
 
Evaluacion de proyectos informaticos
Evaluacion de proyectos informaticosEvaluacion de proyectos informaticos
Evaluacion de proyectos informaticos
 
Curso de javascript y node avanzado
Curso de javascript y node avanzadoCurso de javascript y node avanzado
Curso de javascript y node avanzado
 

Más de Fernando Escolar Martínez-Berganza

Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016Fernando Escolar Martínez-Berganza
 

Más de Fernando Escolar Martínez-Berganza (20)

Por qué todo lo que subo a azure esta mal
Por qué todo lo que subo a azure esta malPor qué todo lo que subo a azure esta mal
Por qué todo lo que subo a azure esta mal
 
Deconstrucción de SOLID
Deconstrucción de SOLIDDeconstrucción de SOLID
Deconstrucción de SOLID
 
Gapand - por qué odio git?
Gapand - por qué odio git?Gapand - por qué odio git?
Gapand - por qué odio git?
 
Betabeers - continuous deployment
Betabeers - continuous deploymentBetabeers - continuous deployment
Betabeers - continuous deployment
 
Devops RoadShow: load testing and autoscale
Devops RoadShow: load testing and autoscaleDevops RoadShow: load testing and autoscale
Devops RoadShow: load testing and autoscale
 
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
 
Reconnect 2015 - ALM VSTS
Reconnect 2015 - ALM VSTSReconnect 2015 - ALM VSTS
Reconnect 2015 - ALM VSTS
 
Codemotion 2015 - Unit Testing
Codemotion 2015 - Unit TestingCodemotion 2015 - Unit Testing
Codemotion 2015 - Unit Testing
 
Unit testing en Windows 10
Unit testing en Windows 10Unit testing en Windows 10
Unit testing en Windows 10
 
Las cronicas de redis
Las cronicas de redisLas cronicas de redis
Las cronicas de redis
 
Redis: no solo una caché
Redis: no solo una cachéRedis: no solo una caché
Redis: no solo una caché
 
DotNet Conference: code smells
DotNet Conference: code smellsDotNet Conference: code smells
DotNet Conference: code smells
 
Foro de Arquitectos: caché en azure a fondo
Foro de Arquitectos: caché en azure a fondoForo de Arquitectos: caché en azure a fondo
Foro de Arquitectos: caché en azure a fondo
 
Codemotion: descubriendo las cachés
Codemotion: descubriendo las cachésCodemotion: descubriendo las cachés
Codemotion: descubriendo las cachés
 
Unit tesing y el mito de los 0 bugs
Unit tesing y el mito de los 0 bugsUnit tesing y el mito de los 0 bugs
Unit tesing y el mito de los 0 bugs
 
We Love Js 6 - Knockout js (with Marc Rubiño)
We Love Js 6 - Knockout js (with Marc Rubiño)We Love Js 6 - Knockout js (with Marc Rubiño)
We Love Js 6 - Knockout js (with Marc Rubiño)
 
Mobile services by @quiqu3
Mobile services by @quiqu3Mobile services by @quiqu3
Mobile services by @quiqu3
 
Javascript no es vietnam
Javascript no es vietnamJavascript no es vietnam
Javascript no es vietnam
 
Where is my beer?
Where is my beer?Where is my beer?
Where is my beer?
 
Coding kihon + Zombie Code Survival Guide
Coding kihon + Zombie Code Survival GuideCoding kihon + Zombie Code Survival Guide
Coding kihon + Zombie Code Survival Guide
 

Último

REGLAS DEL FUTBOL NIVEL 1 - Nicolas Ramirez
REGLAS DEL FUTBOL NIVEL 1 - Nicolas RamirezREGLAS DEL FUTBOL NIVEL 1 - Nicolas Ramirez
REGLAS DEL FUTBOL NIVEL 1 - Nicolas Ramirezramireznicolas1
 
Unidad didáctica acrosport.docx de este año
Unidad didáctica acrosport.docx de este añoUnidad didáctica acrosport.docx de este año
Unidad didáctica acrosport.docx de este añojaime mamani olachea
 
Historia, reglas, medidas de la cancha sobre el baloncesto
Historia, reglas, medidas de la cancha sobre el baloncestoHistoria, reglas, medidas de la cancha sobre el baloncesto
Historia, reglas, medidas de la cancha sobre el baloncestoDomyRubiselAquinoAvi
 
Posiciones y roles en baloncesto (presentación).pptx
Posiciones y roles en baloncesto (presentación).pptxPosiciones y roles en baloncesto (presentación).pptx
Posiciones y roles en baloncesto (presentación).pptxGabyBarrera16
 
Reunion 8 Hipodromo Nacional de Valencia 200424.pdf
Reunion 8 Hipodromo Nacional de Valencia 200424.pdfReunion 8 Hipodromo Nacional de Valencia 200424.pdf
Reunion 8 Hipodromo Nacional de Valencia 200424.pdfWinston1968
 
1°-EDA-PRIMARIA.docx para el nivel primario
1°-EDA-PRIMARIA.docx para el nivel primario1°-EDA-PRIMARIA.docx para el nivel primario
1°-EDA-PRIMARIA.docx para el nivel primariojaime mamani olachea
 
educacion fisica.pptxb como principiante como tiene beneficios algunos ejerci...
educacion fisica.pptxb como principiante como tiene beneficios algunos ejerci...educacion fisica.pptxb como principiante como tiene beneficios algunos ejerci...
educacion fisica.pptxb como principiante como tiene beneficios algunos ejerci...edwincuvi8
 
Reunion 15 Hipodromo La Rinconada 210424.pdf
Reunion 15 Hipodromo La Rinconada 210424.pdfReunion 15 Hipodromo La Rinconada 210424.pdf
Reunion 15 Hipodromo La Rinconada 210424.pdfWinston1968
 
Fortaleza Mental en Atletas. Alto rendimiento Deportivo
Fortaleza Mental en Atletas. Alto rendimiento DeportivoFortaleza Mental en Atletas. Alto rendimiento Deportivo
Fortaleza Mental en Atletas. Alto rendimiento Deportivoarroyos7902
 
Agenda Deportiva Directv - 12 al 19 de abril
Agenda Deportiva Directv - 12 al 19 de abrilAgenda Deportiva Directv - 12 al 19 de abril
Agenda Deportiva Directv - 12 al 19 de abrileluniversocom
 
Agenda Deportiva DirecTv - 19 al 26 de abril.pdf
Agenda Deportiva DirecTv - 19 al 26 de abril.pdfAgenda Deportiva DirecTv - 19 al 26 de abril.pdf
Agenda Deportiva DirecTv - 19 al 26 de abril.pdfeluniversocom
 

Último (11)

REGLAS DEL FUTBOL NIVEL 1 - Nicolas Ramirez
REGLAS DEL FUTBOL NIVEL 1 - Nicolas RamirezREGLAS DEL FUTBOL NIVEL 1 - Nicolas Ramirez
REGLAS DEL FUTBOL NIVEL 1 - Nicolas Ramirez
 
Unidad didáctica acrosport.docx de este año
Unidad didáctica acrosport.docx de este añoUnidad didáctica acrosport.docx de este año
Unidad didáctica acrosport.docx de este año
 
Historia, reglas, medidas de la cancha sobre el baloncesto
Historia, reglas, medidas de la cancha sobre el baloncestoHistoria, reglas, medidas de la cancha sobre el baloncesto
Historia, reglas, medidas de la cancha sobre el baloncesto
 
Posiciones y roles en baloncesto (presentación).pptx
Posiciones y roles en baloncesto (presentación).pptxPosiciones y roles en baloncesto (presentación).pptx
Posiciones y roles en baloncesto (presentación).pptx
 
Reunion 8 Hipodromo Nacional de Valencia 200424.pdf
Reunion 8 Hipodromo Nacional de Valencia 200424.pdfReunion 8 Hipodromo Nacional de Valencia 200424.pdf
Reunion 8 Hipodromo Nacional de Valencia 200424.pdf
 
1°-EDA-PRIMARIA.docx para el nivel primario
1°-EDA-PRIMARIA.docx para el nivel primario1°-EDA-PRIMARIA.docx para el nivel primario
1°-EDA-PRIMARIA.docx para el nivel primario
 
educacion fisica.pptxb como principiante como tiene beneficios algunos ejerci...
educacion fisica.pptxb como principiante como tiene beneficios algunos ejerci...educacion fisica.pptxb como principiante como tiene beneficios algunos ejerci...
educacion fisica.pptxb como principiante como tiene beneficios algunos ejerci...
 
Reunion 15 Hipodromo La Rinconada 210424.pdf
Reunion 15 Hipodromo La Rinconada 210424.pdfReunion 15 Hipodromo La Rinconada 210424.pdf
Reunion 15 Hipodromo La Rinconada 210424.pdf
 
Fortaleza Mental en Atletas. Alto rendimiento Deportivo
Fortaleza Mental en Atletas. Alto rendimiento DeportivoFortaleza Mental en Atletas. Alto rendimiento Deportivo
Fortaleza Mental en Atletas. Alto rendimiento Deportivo
 
Agenda Deportiva Directv - 12 al 19 de abril
Agenda Deportiva Directv - 12 al 19 de abrilAgenda Deportiva Directv - 12 al 19 de abril
Agenda Deportiva Directv - 12 al 19 de abril
 
Agenda Deportiva DirecTv - 19 al 26 de abril.pdf
Agenda Deportiva DirecTv - 19 al 26 de abril.pdfAgenda Deportiva DirecTv - 19 al 26 de abril.pdf
Agenda Deportiva DirecTv - 19 al 26 de abril.pdf
 

Introducción a Reactive Extensions (Rx

  • 1. Bienvenido al mundo reactivo con: Reactive Extensions (Rx) Por Fernando Escolar
  • 2. reactive extensions contexto ui event-based the cloud client application asynchronous communication @SecondNug @fernandoescolar
  • 3. reactive extensions reactive programming • Basada en flujos de datos y propagación de cambios. Tradicional Reactiva @SecondNug @fernandoescolar
  • 4. reactive extensions definición • Microsoft Live Labs - Erik Meijer “Rx es una librería para componer programas asíncronos y basados en eventos usando colecciones observables” • Dualidad matemática entre el patrón iterator y el observer. @SecondNug @fernandoescolar
  • 5. reactive extensions definición • Microsoft Live Labs - Erik Meijer “Rx es una librería para componer programas asíncronos y basados en eventos usando colecciones observables” Rx = Observables + Linq + Schedulers • Dualidad matemática entre el patrón iterator y el observer. @SecondNug @fernandoescolar
  • 6. reactive extensions instalación Nuget Web @SecondNug @fernandoescolar
  • 7. reactive extensions patrón iterator @SecondNug @fernandoescolar
  • 8. reactive extensions patrón observer @SecondNug @fernandoescolar
  • 9. reactive extensions formula Rx = Observables + Linq + Schedulers @SecondNug @fernandoescolar
  • 10. reactive extensions sujetos ISubject<T>: IObservable<T>,IObserver<T> Tipos: • Subject<T> • ReplaySubject<T> • BehaviorSubject<T> • AsyncSubject<T> @SecondNug @fernandoescolar
  • 11. reactive extensions Rx vs. events Sujetos: Eventos: Declaración Declaración ISubject<string> Changed = event Action<string> Notified; new Subject<string>(); Suscripción Suscripción var disposable = Action<string> OnNotified = Changed.Subscribe( s => Console.WriteLine(s); s => Console.WriteLine(s)); Notified += OnNotified; Publicación Publicación Changed.OnNext ("hello"); Notified("hello"); Desuscripción Desuscripción disposable.Dispose(); Notified -= OnNotified; @SecondNug @fernandoescolar
  • 12. reactive extensions observable: creadores • Create • Never • CreateWithDisposable • Range • Defer • Repeat • Empty • Return • FromAsyncPattern • Start • FromEvent • StartWith • Generate • Throw • GenerateInSequence • Timer • Interval • Using @SecondNug @fernandoescolar
  • 13. reactive extensions formula Rx = Observables + Linq + Schedulers @SecondNug @fernandoescolar
  • 14. reactive extensions scheduler • Dispatcher: Programa en el dispatcher actual. • NewThread: Lo programa en un nuevo hilo. • ThreadPool: Lo encola en la threadPool. • TaskPool: En la Pool de task (Parallel) • Inmediate: Lo ejecuta inmediatamente, sin programar. • CurrentThread: La programa para ejecutarse en el hilo actual. @SecondNug @fernandoescolar
  • 15. reactive extensions formula Rx = Observables + Linq + Schedulers @SecondNug @fernandoescolar
  • 16. reactive extensions observable: operadores i. • Amb • Merge • SubscribeOn • Asynchronous • ObserveOn • SubscribeOnDispatcher • Buffer • ObserveOnDispatcher • Switch • BufferWithTime • OnErrorResumeNext • Synchronize • Catch • Remotable • Take • CombineLatest • RemoveTimeInterval • Concat • RemoveTimestamp • TakeWhile • Delay • Repeat • Throttle • Dematerialize • Retry • TimeInterval • Do • Sample • Timeout • Finally • Scan • Timestamp • GroupBy • Select • Until • Hide • SelectMany • WaitUntil • HoldUntilChanged • Skip • Where • Let • SkipWhile • Yield • Materialize • SkipUntil • Zip @SecondNug @fernandoescolar
  • 17. reactive extensions observable: operadores ii. • Evaluadores: • Uniones:  Agregarte  Join  And  Then  Contains  Count  First • Otras:  FirstOrDefault  Prune  GetEnumerator  Publish  Last  Record  LastOrDefault  Latest  Replay  LatestValue  LongCount  MostRecent  MostRecentValue  Next  NextValue  Single  SingleOrDefault  ToEnumerable @SecondNug @fernandoescolar
  • 18. reactive extensions Rx vs. events Sujetos: Eventos: Declaración Declaración ISubject<string> Changed = event Action<string> Notified; new Subject<string>(); Suscripción Suscripción var disposable = Action<string> OnNotified = Changed.Subscribe( s => Console.WriteLine(s); s => Console.WriteLine(s)); Notified += OnNotified; Publicación Publicación Changed.OnNext ("hello"); Notified("hello"); Desuscripción Desuscripción disposable.Dispose(); Notified -= OnNotified; @SecondNug @fernandoescolar
  • 19. reactive extensions Linq2Events Convertir un cualquier evento en observable: @SecondNug @fernandoescolar
  • 20. reactive extensions Ejemplos Ejemplos útiles en diversas aplicaciones: - WPF Drag ‘n Drop - Reactive EventAggregator - Twitter @SecondNug @fernandoescolar
  • 21. reactive extensions ruegos y preguntas @SecondNug @fernandoescolar
  • 22. reactive extensions despedida ¡Muchas gracias a todos! • Agradecimientos:  SecondNug y concretamente a Alfredo Fernández  Pablo Bouzada  Javier Jimenez (rx: first contact) • Enlaces de interés  http://en.wikipedia.org/wiki/Reactive_programming  http://en.wikipedia.org/wiki/Observer_pattern  http://en.wikipedia.org/wiki/Iterator_pattern  http://www.dofactory.com/Patterns/PatternIterator.aspx  http://www.minddriven.de/index.php/technology/dot-net/reactive-framework-rx-first-look  http://www.silverlightshow.net/items/Using-Reactive-Extensions-in-Silverlight.aspx  http://leecampbell.blogspot.com/2010/08/reactive-extensions-for-net.html  http://rxwiki.wikidot.com/101samples @SecondNug @fernandoescolar