SlideShare uma empresa Scribd logo
1 de 23
Globalcode – Open4education
Programando interfaces reativas
com Xamarin e ReactiveUI
Mahmoud Ali
Desenvolvedor @ Lambda3
Globalcode – Open4education
Interface Reativas
Usuários esperam interfaces reativas e respostas
em milisegundos e 100% de disponibilidade
Seu sistema precisa ser resistente a falhas
http://www.reactivemanifesto.org/pt-BR
Globalcode – Open4education
Reactive Extensions (Rx)
Reactive Extensions é uma biblioteca para compor
programas assíncronos e orientados a eventos
utilizando observables e operadores LINQ-style.
Globalcode – Open4education
Reactive Extensions
Criado pela Microsoft pelo
mesmo time de desenvolvedores
do LINQ
“LINQ para eventos”
Conceitos de paradigma
funcional
Utiliza o design pattern: Observer
Portada para várias linguagens:
Javascript, Java, Ruby, Python...
Globalcode – Open4education
Streams
Funciona como uma esteira de produção
É uma sequência de eventos ordenados por
tempo
É a base do Rx (IObservable<T> no .NET)
É assíncrono e push-based
Podem ser transformados de diversas maneiras
Globalcode – Open4education
Streams
Quem quiser tratar o conteúdo que está passando
pela esteira precisa dar um subscribe
No padrão Observer: o stream (IObservable) é o
subject, o subscriber é o observer
Emite três estados: OnNext, OnError e
OnCompleted
São disposables
Globalcode – Open4education
Streams
https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
Globalcode – Open4education
Streams
Tudo pode ser transformado em um stream:
Cliques de mouse
Teclas digitadas
Tasks assíncronas
Timers
Inclusive streams
Globalcode – Open4education
Streams
https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
Globalcode – Open4education
Onde usar?
Eventos que dependem de infraestrutura
(filewatcher)
Eventos real-time
Eventos de UI
Streams (ex.: rede)
Globalcode – Open4education
Quem está usando?
Globalcode – Open4education
Demo: Rx
Globalcode – Open4education
Observable.Range
Globalcode – Open4education
Throttle
Globalcode – Open4education
Buffer
Globalcode – Open4education
ReactiveUI (RxUI)
Framework open source para facilitar a utilização
de Rx na criação de interfaces reativas em
qualquer plataforma, reaproveitando código
Globalcode – Open4education
ReactiveUI
Também é um framework MVVM
Globalcode – Open4education
ReactiveUI
Disponibiliza uma série de helpers para facilitar a
criação das interfaces:
Bind
ObservableAsPropertyHelper
ReactiveCommands
ReactiveAdapters
Globalcode – Open4education
Demo: ReactiveUI
Globalcode – Open4education
DistinctUntilChanged
Globalcode – Open4education
Switch
Globalcode – Open4education
Referências
The introduction to Reactive Programming you've be
http://rxmarbles.com/
http://www.introtorx.com/
https://reactivex.slack.com/
http://reactiveui.net/
https://goo.gl/KazgWp
https://github.com/akamud/HackDaysRxUI
Globalcode – Open4education
Obrigado!
@akamud

Mais conteúdo relacionado

Semelhante a Programando interfaces reativas com ReacitveUI na plataforma Xamarin

TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
tdc-globalcode
 
TDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityTDC 2012 Trilha – Android University
TDC 2012 Trilha – Android University
Inael Rodrigues
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
Cleber Dantas
 

Semelhante a Programando interfaces reativas com ReacitveUI na plataforma Xamarin (20)

Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetos
 
Introdução ao Habitat
Introdução ao HabitatIntrodução ao Habitat
Introdução ao Habitat
 
java
javajava
java
 
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
 
TDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityTDC 2012 Trilha – Android University
TDC 2012 Trilha – Android University
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviços
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 
TDC2017 | São Paulo - Trilha Rad: Delphi C++ How we figured out we had a SRE...
TDC2017 | São Paulo - Trilha Rad: Delphi C++  How we figured out we had a SRE...TDC2017 | São Paulo - Trilha Rad: Delphi C++  How we figured out we had a SRE...
TDC2017 | São Paulo - Trilha Rad: Delphi C++ How we figured out we had a SRE...
 
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDBArquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
 
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
 
Microservices reativos e a experiência do iFood
Microservices reativos e a experiência do iFoodMicroservices reativos e a experiência do iFood
Microservices reativos e a experiência do iFood
 
Devcamp 2017 Microservices Reativos
Devcamp 2017   Microservices ReativosDevcamp 2017   Microservices Reativos
Devcamp 2017 Microservices Reativos
 
QCon SP 2017 - Reactive Microservices e a experiência do iFood
QCon SP 2017 - Reactive Microservices e a experiência do iFoodQCon SP 2017 - Reactive Microservices e a experiência do iFood
QCon SP 2017 - Reactive Microservices e a experiência do iFood
 
TDC São Paulo 2015 - Interfaces Ricas com Rails e React.JS
TDC São Paulo 2015  - Interfaces Ricas com Rails e React.JSTDC São Paulo 2015  - Interfaces Ricas com Rails e React.JS
TDC São Paulo 2015 - Interfaces Ricas com Rails e React.JS
 
Novidades do ASP.NET Core 2.1 - TDC 2018 - São Paulo
Novidades do ASP.NET Core 2.1 - TDC 2018 - São PauloNovidades do ASP.NET Core 2.1 - TDC 2018 - São Paulo
Novidades do ASP.NET Core 2.1 - TDC 2018 - São Paulo
 
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
 

Mais de akamud

Mais de akamud (20)

.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?
 
Hacktoberfest - Contribuindo com Open Source
Hacktoberfest  - Contribuindo com Open SourceHacktoberfest  - Contribuindo com Open Source
Hacktoberfest - Contribuindo com Open Source
 
Automatizando os testes da sua aplicação hoje
Automatizando os testes da sua aplicação hojeAutomatizando os testes da sua aplicação hoje
Automatizando os testes da sua aplicação hoje
 
Indo além do Enterprise: fazendo aplicativos para usuários finais com Xamarin...
Indo além do Enterprise: fazendo aplicativos para usuários finais com Xamarin...Indo além do Enterprise: fazendo aplicativos para usuários finais com Xamarin...
Indo além do Enterprise: fazendo aplicativos para usuários finais com Xamarin...
 
.NET MAUI - O futuro do desenvolvimento de apps no .NET
.NET MAUI - O futuro do desenvolvimento de apps no .NET.NET MAUI - O futuro do desenvolvimento de apps no .NET
.NET MAUI - O futuro do desenvolvimento de apps no .NET
 
Azure DevOps + App Center: DevOps multi-staging para seu app
Azure DevOps + App Center: DevOps multi-staging para seu appAzure DevOps + App Center: DevOps multi-staging para seu app
Azure DevOps + App Center: DevOps multi-staging para seu app
 
O Futuro do .NET
O Futuro do .NETO Futuro do .NET
O Futuro do .NET
 
Interfaces reativas com ReactiveUI no Xamarin.Forms
Interfaces reativas com ReactiveUI no Xamarin.FormsInterfaces reativas com ReactiveUI no Xamarin.Forms
Interfaces reativas com ReactiveUI no Xamarin.Forms
 
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019
 
Mobile Development Simplified with Xamarin
Mobile Development Simplified with XamarinMobile Development Simplified with Xamarin
Mobile Development Simplified with Xamarin
 
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobileXamarin + TDD - Reagindo rápido à mudanças no mundo mobile
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile
 
Desenvolvimento cross-platform em C# com Xamarin - 2018
Desenvolvimento cross-platform em C# com Xamarin - 2018Desenvolvimento cross-platform em C# com Xamarin - 2018
Desenvolvimento cross-platform em C# com Xamarin - 2018
 
O que há de novo no Xamarin.Forms
O que há de novo no Xamarin.FormsO que há de novo no Xamarin.Forms
O que há de novo no Xamarin.Forms
 
Xamarin em 7 minutos
Xamarin em 7 minutosXamarin em 7 minutos
Xamarin em 7 minutos
 
Automatizando tudo no mundo mobile com fastlane
Automatizando tudo no mundo mobile com fastlaneAutomatizando tudo no mundo mobile com fastlane
Automatizando tudo no mundo mobile com fastlane
 
Tornando o Xamarin.Forms ainda melhor com Prism
Tornando o Xamarin.Forms ainda melhor com PrismTornando o Xamarin.Forms ainda melhor com Prism
Tornando o Xamarin.Forms ainda melhor com Prism
 
Animações com Xamarin.Forms
Animações com Xamarin.FormsAnimações com Xamarin.Forms
Animações com Xamarin.Forms
 
Instrumentação completa com Visual Studio Mobile Center
Instrumentação completa com Visual Studio Mobile CenterInstrumentação completa com Visual Studio Mobile Center
Instrumentação completa com Visual Studio Mobile Center
 
Xamarin Forms: O caminho para 100% de código compartilhado em aplicativos móveis
Xamarin Forms: O caminho para 100% de código compartilhado em aplicativos móveisXamarin Forms: O caminho para 100% de código compartilhado em aplicativos móveis
Xamarin Forms: O caminho para 100% de código compartilhado em aplicativos móveis
 
Aumentando reaproveitamento de código com MvvmCross
Aumentando reaproveitamento de código com MvvmCrossAumentando reaproveitamento de código com MvvmCross
Aumentando reaproveitamento de código com MvvmCross
 

Programando interfaces reativas com ReacitveUI na plataforma Xamarin