SlideShare una empresa de Scribd logo
1 de 31
Rx La Joya de la corona
Adrián Alberto Romero Granados
rgfxadrian@outlook.com
https://www.linkedin.com/in/rgfxadrian/
Patrocinado por:
.Net Conf Mx 2018
Comunidades asociadas:
.Net Conf Mx 2018
Temario
.Net Conf Mx 2018
• C# y LINQ • Intro a Rx • ReactiveUI
.Net Conf Mx 2018
• Language Integrated Query
• Permite consultar fuentes de datos diversas de una forma
consistente y agnóstica a la fuente subyacente de datos
• Dos formas de escribirlo, por comprensión y por métodos de
extension
• Providers
C# y LINQ
.Net Conf Mx 2018
• Expresiones lambda
• Métodos de extensión
• Inicializadores de objetos (y listas)
• Tipos anónimos
Características que habilitan a LINQ
.Net Conf Mx 2018
• Delegados, tipos que contienen la definición de un método
• Métodos anónimos, delegados de una sola línea, sin nombre.
• Las expresiones lambda son una abreviatura para los
delegados anónimos.
Expresiones lambda
.Net Conf Mx 2018
.Net Conf Mx 2018
• Syntactic Sugar para crear
métodos estáticos sobre tipos
estáticos e invocarlos como
métodos de instancia.
• Facilita la escritura, comprensión y
posterior mantenimiento del
código.
Métodos de extensión
.Net Conf Mx 2018
.Net Conf Mx 2018
• Simplifican crear una instancia de cualquier clase
Inicializadores de objetos y listas
.Net Conf Mx 2018
• Tipos creados al vuelo por el compilador.
• Propiedades de solo lectura
• Útiles cuando solo se requieren pasar resultados entre clases,
evitamos escribir una clase que solo se utilizará una vez
Tipos anónimos
.Net Conf Mx 2018
• Sintaxis de comprensión
• Sintaxis de métodos de
extensión
Sintaxis para escribir
LINQ
.Net Conf Mx 2018
• Un provider es un una pieza de software que implementa
IQueryProvider e IQueryable para una tecnología de
almacenamiento subyacente.
• LINQ to SQL
• LINQ to XML
• LINQ to Objects(IEnumerable)
LINQ Providers
.Net Conf Mx 2018
PULL MODEL
.Net Conf Mx 2018
• Reactive Extensions have been described as a library for
composing asynchronous and event-based
programs using observable collections*
• No confundir con ObservableCollection<T>
Intro to Rx
.Net Conf Mx 2018
• Creadas por Microsoft
• Parte de System
• Gran integración con LINQ
• LINQ to Events
• Liberadas en 2009
• Portadas a
• Java
• C++
• Javascript
• Python
Reactive Extensions
.Net Conf Mx 2018
• Integrado -> LINQ es parte de C#
• Intuitivo -> aprovecha lo que ya sabes Where, Select, Skip,
• Se puede extender -> Métodos de extensión
• Declarativo -> que quiero, no como lo quiero
• Se puede componer -> combinando secuencias
¿En que me beneficia?
.Net Conf Mx 2018
¿Quién lo usa?
.Net Conf Mx 2018
• Notifica a sus observadores
• Push Model
• Podría o no tener un final
• Los valores se pueden procesar con LINQ
• Las suscripciones se terminan vía IDisposable
IObservable<T>
.Net Conf Mx 2018
• Observa notificaciones
• OnNext
• OnCompleted
• OnError
IObserver<T>
.Net Conf Mx 2018
• Observable.Return
• Observable.Empty
• Observable.Range(i,f)
• Collection.ToObservable()
• Observable.
.FromEventPattern
<EventHandler,EventArgs>
Ejemplo
.Net Conf Mx 2018
Operadores
WHERE
SELECT
.Net Conf Mx 2018
• Construido sobre las Reactive Extensions
• Soporte para todas las plataforms graficas de .NET
• Trabaja en conjunto con otros frameworks MVVM
ReactiveUI
.Net Conf Mx 2018
• ReactiveObject
• OAPH ObservableAsPropertyHelper
• ReactiveCommand<Tparameter,TOutput>
• WhenAnyValue*
¿Qué ofrece?
.Net Conf Mx 2018
• Implementa INotifyPropertyChanged
• Todo tiene un costo!!!
• SuppressChangeNotifications
• DelayChangeNotifications
ReactiveObject
.Net Conf Mx 2018
• Implementa ICommand
• CanExecute: IObservable<bool>
• Resultado de la ejecución: IObservable<TResult>
• Excepciones: IObservable<Exception>
ReactiveCommand
.Net Conf Mx 2018
Código!!!
.Net Conf Mx 2018
• Sitio: https://reactiveui.net/
• GitHub: https://github.com/reactiveui/reactiveui
• Slack: reactivex.slack.com
• Libro: https://kent-boogaart.com/you-i-and-reactiveui/
Más recursos
.Net Conf Mx 2018
• https://www.linkedin.com/in/rgfxadrian/
• rgfxadrian@outlook.com
• @rgfxadrian
• https://github.com/phenomx2
Gracias!!!

Más contenido relacionado

Similar a Rx.Net, la Joya de la Corona - .Net Conf Mx 2018

Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Micael Gallego
 
Lp II clase01 - Desarrollo de software con RUP
Lp II   clase01 - Desarrollo de software con RUPLp II   clase01 - Desarrollo de software con RUP
Lp II clase01 - Desarrollo de software con RUPAngelDX
 
Introduccion_a_Python_000000000000000.pdf
Introduccion_a_Python_000000000000000.pdfIntroduccion_a_Python_000000000000000.pdf
Introduccion_a_Python_000000000000000.pdfFranciaMascarell
 
Programación de nivel básico 1. c1.
Programación de nivel básico 1. c1.Programación de nivel básico 1. c1.
Programación de nivel básico 1. c1.DENIRAMIREZANDRADE
 
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos 7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos Luis Fernando Aguas Bucheli
 
Clase 01 - Python.pptx
Clase 01 - Python.pptxClase 01 - Python.pptx
Clase 01 - Python.pptxIS031
 
Findjira presentación
Findjira presentaciónFindjira presentación
Findjira presentaciónCarlos V.
 
Tendencias arquitectura y desarrollo 2019
Tendencias arquitectura y desarrollo 2019Tendencias arquitectura y desarrollo 2019
Tendencias arquitectura y desarrollo 2019Manuel Zapata
 
COMPARATIVA R VS OTROS LP.pptx
COMPARATIVA R VS OTROS LP.pptxCOMPARATIVA R VS OTROS LP.pptx
COMPARATIVA R VS OTROS LP.pptxLunaCorts
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup
 

Similar a Rx.Net, la Joya de la Corona - .Net Conf Mx 2018 (20)

Scala@real life
Scala@real lifeScala@real life
Scala@real life
 
Scala @ Real life
Scala @ Real lifeScala @ Real life
Scala @ Real life
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020
 
tutorial de c++
tutorial de c++tutorial de c++
tutorial de c++
 
Tutorial C++
Tutorial C++Tutorial C++
Tutorial C++
 
Lp II clase01 - Desarrollo de software con RUP
Lp II   clase01 - Desarrollo de software con RUPLp II   clase01 - Desarrollo de software con RUP
Lp II clase01 - Desarrollo de software con RUP
 
Introduccion_a_Python_000000000000000.pdf
Introduccion_a_Python_000000000000000.pdfIntroduccion_a_Python_000000000000000.pdf
Introduccion_a_Python_000000000000000.pdf
 
Programación de nivel básico 1. c1.
Programación de nivel básico 1. c1.Programación de nivel básico 1. c1.
Programación de nivel básico 1. c1.
 
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos 7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
 
Clase 01 - Python.pptx
Clase 01 - Python.pptxClase 01 - Python.pptx
Clase 01 - Python.pptx
 
Semana 7 Servicios Web REST con MongoDB final
Semana 7   Servicios Web REST con MongoDB finalSemana 7   Servicios Web REST con MongoDB final
Semana 7 Servicios Web REST con MongoDB final
 
Web usage mining tools
Web usage mining toolsWeb usage mining tools
Web usage mining tools
 
Findjira presentación
Findjira presentaciónFindjira presentación
Findjira presentación
 
Herramientas
HerramientasHerramientas
Herramientas
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Tendencias arquitectura y desarrollo 2019
Tendencias arquitectura y desarrollo 2019Tendencias arquitectura y desarrollo 2019
Tendencias arquitectura y desarrollo 2019
 
COMPARATIVA R VS OTROS LP.pptx
COMPARATIVA R VS OTROS LP.pptxCOMPARATIVA R VS OTROS LP.pptx
COMPARATIVA R VS OTROS LP.pptx
 
Taller de c sharp
Taller de c sharpTaller de c sharp
Taller de c sharp
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
 
Microsoft machine learning
Microsoft machine learningMicrosoft machine learning
Microsoft machine learning
 

Más de Vicente Gerardo Guzman Lucio

Bienvenido .Net MAUI - la evolución de Xamarin.Forms
Bienvenido .Net MAUI - la evolución de Xamarin.FormsBienvenido .Net MAUI - la evolución de Xamarin.Forms
Bienvenido .Net MAUI - la evolución de Xamarin.FormsVicente Gerardo Guzman Lucio
 
Consumiendo un servicio externo con Axios en Alexa
Consumiendo un servicio externo con Axios en AlexaConsumiendo un servicio externo con Axios en Alexa
Consumiendo un servicio externo con Axios en AlexaVicente Gerardo Guzman Lucio
 

Más de Vicente Gerardo Guzman Lucio (20)

GPPB2024 - Integrando ChatGPT en Power Automate
GPPB2024 - Integrando ChatGPT en Power AutomateGPPB2024 - Integrando ChatGPT en Power Automate
GPPB2024 - Integrando ChatGPT en Power Automate
 
Introducción a Amazon Alexa.pptx
Introducción a Amazon Alexa.pptxIntroducción a Amazon Alexa.pptx
Introducción a Amazon Alexa.pptx
 
Creando un Chatbot en C# con ChatGPT.pdf
Creando un Chatbot en C# con ChatGPT.pdfCreando un Chatbot en C# con ChatGPT.pdf
Creando un Chatbot en C# con ChatGPT.pdf
 
ChatGPT & Alexa.pptx
ChatGPT & Alexa.pptxChatGPT & Alexa.pptx
ChatGPT & Alexa.pptx
 
Bienvenido .Net MAUI - la evolución de Xamarin.Forms
Bienvenido .Net MAUI - la evolución de Xamarin.FormsBienvenido .Net MAUI - la evolución de Xamarin.Forms
Bienvenido .Net MAUI - la evolución de Xamarin.Forms
 
Conectando un Azure Bot con una Alexa Skill
Conectando un Azure Bot con una Alexa SkillConectando un Azure Bot con una Alexa Skill
Conectando un Azure Bot con una Alexa Skill
 
Azure DevOps y Blazor Web Assembly
Azure DevOps y Blazor Web AssemblyAzure DevOps y Blazor Web Assembly
Azure DevOps y Blazor Web Assembly
 
Desarrollo de Interfaces de Voz: Alexa Skills
Desarrollo de Interfaces de Voz: Alexa SkillsDesarrollo de Interfaces de Voz: Alexa Skills
Desarrollo de Interfaces de Voz: Alexa Skills
 
Blazor vs VUE
Blazor vs VUEBlazor vs VUE
Blazor vs VUE
 
Introducción a Blazor
Introducción a BlazorIntroducción a Blazor
Introducción a Blazor
 
Infraestructura como Código en Azure
Infraestructura como Código en AzureInfraestructura como Código en Azure
Infraestructura como Código en Azure
 
Diseño de Experiencias de Voz con Amazon Alexa
Diseño de Experiencias de Voz con Amazon AlexaDiseño de Experiencias de Voz con Amazon Alexa
Diseño de Experiencias de Voz con Amazon Alexa
 
Alexa Skill con .NETCore & AWS Lambda
Alexa Skill con .NETCore & AWS LambdaAlexa Skill con .NETCore & AWS Lambda
Alexa Skill con .NETCore & AWS Lambda
 
Skills Nights - Vol.III - Primeros Pasos
Skills Nights - Vol.III - Primeros PasosSkills Nights - Vol.III - Primeros Pasos
Skills Nights - Vol.III - Primeros Pasos
 
¿Qué es la Nube?
¿Qué es la Nube?¿Qué es la Nube?
¿Qué es la Nube?
 
Consumiendo un servicio externo con Axios en Alexa
Consumiendo un servicio externo con Axios en AlexaConsumiendo un servicio externo con Axios en Alexa
Consumiendo un servicio externo con Axios en Alexa
 
La era de los Chatbots
La era de los ChatbotsLa era de los Chatbots
La era de los Chatbots
 
Android 64x con Xamarin.Forms
Android 64x con Xamarin.FormsAndroid 64x con Xamarin.Forms
Android 64x con Xamarin.Forms
 
Creando nuestra propia Skill de YouTube
Creando nuestra propia Skill de YouTubeCreando nuestra propia Skill de YouTube
Creando nuestra propia Skill de YouTube
 
Alexa Skill en 5 pasos
Alexa Skill en 5 pasosAlexa Skill en 5 pasos
Alexa Skill en 5 pasos
 

Rx.Net, la Joya de la Corona - .Net Conf Mx 2018

  • 1.
  • 2. Rx La Joya de la corona Adrián Alberto Romero Granados rgfxadrian@outlook.com https://www.linkedin.com/in/rgfxadrian/
  • 5. Temario .Net Conf Mx 2018 • C# y LINQ • Intro a Rx • ReactiveUI
  • 6. .Net Conf Mx 2018 • Language Integrated Query • Permite consultar fuentes de datos diversas de una forma consistente y agnóstica a la fuente subyacente de datos • Dos formas de escribirlo, por comprensión y por métodos de extension • Providers C# y LINQ
  • 7. .Net Conf Mx 2018 • Expresiones lambda • Métodos de extensión • Inicializadores de objetos (y listas) • Tipos anónimos Características que habilitan a LINQ
  • 8. .Net Conf Mx 2018 • Delegados, tipos que contienen la definición de un método • Métodos anónimos, delegados de una sola línea, sin nombre. • Las expresiones lambda son una abreviatura para los delegados anónimos. Expresiones lambda
  • 10. .Net Conf Mx 2018 • Syntactic Sugar para crear métodos estáticos sobre tipos estáticos e invocarlos como métodos de instancia. • Facilita la escritura, comprensión y posterior mantenimiento del código. Métodos de extensión
  • 11. .Net Conf Mx 2018
  • 12. .Net Conf Mx 2018 • Simplifican crear una instancia de cualquier clase Inicializadores de objetos y listas
  • 13. .Net Conf Mx 2018 • Tipos creados al vuelo por el compilador. • Propiedades de solo lectura • Útiles cuando solo se requieren pasar resultados entre clases, evitamos escribir una clase que solo se utilizará una vez Tipos anónimos
  • 14. .Net Conf Mx 2018 • Sintaxis de comprensión • Sintaxis de métodos de extensión Sintaxis para escribir LINQ
  • 15. .Net Conf Mx 2018 • Un provider es un una pieza de software que implementa IQueryProvider e IQueryable para una tecnología de almacenamiento subyacente. • LINQ to SQL • LINQ to XML • LINQ to Objects(IEnumerable) LINQ Providers
  • 16. .Net Conf Mx 2018 PULL MODEL
  • 17. .Net Conf Mx 2018 • Reactive Extensions have been described as a library for composing asynchronous and event-based programs using observable collections* • No confundir con ObservableCollection<T> Intro to Rx
  • 18. .Net Conf Mx 2018 • Creadas por Microsoft • Parte de System • Gran integración con LINQ • LINQ to Events • Liberadas en 2009 • Portadas a • Java • C++ • Javascript • Python Reactive Extensions
  • 19. .Net Conf Mx 2018 • Integrado -> LINQ es parte de C# • Intuitivo -> aprovecha lo que ya sabes Where, Select, Skip, • Se puede extender -> Métodos de extensión • Declarativo -> que quiero, no como lo quiero • Se puede componer -> combinando secuencias ¿En que me beneficia?
  • 20. .Net Conf Mx 2018 ¿Quién lo usa?
  • 21. .Net Conf Mx 2018 • Notifica a sus observadores • Push Model • Podría o no tener un final • Los valores se pueden procesar con LINQ • Las suscripciones se terminan vía IDisposable IObservable<T>
  • 22. .Net Conf Mx 2018 • Observa notificaciones • OnNext • OnCompleted • OnError IObserver<T>
  • 23. .Net Conf Mx 2018 • Observable.Return • Observable.Empty • Observable.Range(i,f) • Collection.ToObservable() • Observable. .FromEventPattern <EventHandler,EventArgs> Ejemplo
  • 24. .Net Conf Mx 2018 Operadores WHERE SELECT
  • 25. .Net Conf Mx 2018 • Construido sobre las Reactive Extensions • Soporte para todas las plataforms graficas de .NET • Trabaja en conjunto con otros frameworks MVVM ReactiveUI
  • 26. .Net Conf Mx 2018 • ReactiveObject • OAPH ObservableAsPropertyHelper • ReactiveCommand<Tparameter,TOutput> • WhenAnyValue* ¿Qué ofrece?
  • 27. .Net Conf Mx 2018 • Implementa INotifyPropertyChanged • Todo tiene un costo!!! • SuppressChangeNotifications • DelayChangeNotifications ReactiveObject
  • 28. .Net Conf Mx 2018 • Implementa ICommand • CanExecute: IObservable<bool> • Resultado de la ejecución: IObservable<TResult> • Excepciones: IObservable<Exception> ReactiveCommand
  • 29. .Net Conf Mx 2018 Código!!!
  • 30. .Net Conf Mx 2018 • Sitio: https://reactiveui.net/ • GitHub: https://github.com/reactiveui/reactiveui • Slack: reactivex.slack.com • Libro: https://kent-boogaart.com/you-i-and-reactiveui/ Más recursos
  • 31. .Net Conf Mx 2018 • https://www.linkedin.com/in/rgfxadrian/ • rgfxadrian@outlook.com • @rgfxadrian • https://github.com/phenomx2 Gracias!!!

Notas del editor

  1. LINQ no es una tecnología monolitica, es un superconjunto de tecnologías agrupadas, cada una muy poderosa por si sola, en conjunto son absolutamente imparables.