SlideShare a Scribd company logo
1 of 27
Download to read offline
Programando interfaces
reativas com Xamarin e
ReactiveUI
Mahmoud Ali
Desenvolvedor @ Lambda3
@akamud | akamud@apache.org
Interfaces 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
Reactive Extensions (Rx)
Reactive Extensions é uma biblioteca para compor programas
assíncronos e orientados a eventos utilizando observables e
operadores LINQ-style.
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...
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
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
https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
Streams
Tudo pode ser transformado em um stream:
• Cliques de mouse
• Teclas digitadas
• Tasks assíncronas
• Timers
• Inclusive streams
Streams
https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
Onde usar?
• Eventos que dependem de infraestrutura (filewatcher)
• Eventos real-time
• Eventos de UI
• Streams (ex.: rede)
Quem está usando
Demo: Rx
Observable.Range
Select
Where
Throttle
Buffer
Merge
CombineLatest
Zip
ReactiveUI (RxUI)
Framework open source para facilitar a utilização de Rx na criação
de interfaces reativas em qualquer plataforma, reaproveitando
código
ReactiveUI
Também é um framework MVVM
ReactiveUI
Disponibiliza uma série de helpers para facilitar a criação das
interfaces:
• Bind
• ObservableAsPropertyHelper
• ReactiveCommands
• ReactiveAdapters
Demo: ReactiveUI
DistinctUntilChanged
Switch
Referências
• The introduction to Reactive Programming you've been missing
• http://rxmarbles.com/
• http://www.introtorx.com/
• https://reactivex.slack.com/
• http://reactiveui.net/
• http://bit.ly/rxui-xamarin
• https://github.com/akamud/HackDaysRxUI (Este código)
Obrigado!
@akamud

More Related Content

Similar to Programando interfaces reativas com Xamarin e ReactiveUI

Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRodrigo Recio
 
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 iFoodDevCamp Campinas
 
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çosThiago Pereira
 
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 iFoodTiago Marchetti Dolphine
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
TDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com JavaTDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com JavaRodrigo Cândido da Silva
 
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.Filipe Morelli
 
TDC2016SP - Web Moderna além do Front-End com AngularJS
TDC2016SP - Web Moderna além do Front-End com AngularJSTDC2016SP - Web Moderna além do Front-End com AngularJS
TDC2016SP - Web Moderna além do Front-End com AngularJStdc-globalcode
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetosPaulo Carvalho
 
Orquestração de containers com Rancher
Orquestração de containers com RancherOrquestração de containers com Rancher
Orquestração de containers com RancherAlex Ishida
 
InterCon 2017 - Desbravando o Mundo da Programação Reativa - Erich Oliveira
InterCon 2017 - Desbravando o Mundo da Programação Reativa - Erich OliveiraInterCon 2017 - Desbravando o Mundo da Programação Reativa - Erich Oliveira
InterCon 2017 - Desbravando o Mundo da Programação Reativa - Erich OliveiraiMasters
 
Kafka: Uma introdução para Desenvolvedores e Arquitetos
 Kafka: Uma introdução para Desenvolvedores e Arquitetos Kafka: Uma introdução para Desenvolvedores e Arquitetos
Kafka: Uma introdução para Desenvolvedores e ArquitetosVictor Osorio
 
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - MarçoASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - MarçoRenato Groff
 
Ruby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e PráticaRuby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e PráticaGabriel Molter
 
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQLVacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQLTaller Negócio Digitais
 
Desenvolvimento RIA com Java
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
Desenvolvimento RIA com Javaarmeniocardoso
 
Cloudwalker - processamento distribuído em nuvem
Cloudwalker - processamento distribuído em nuvemCloudwalker - processamento distribuído em nuvem
Cloudwalker - processamento distribuído em nuvemFlávio Lisboa
 

Similar to Programando interfaces reativas com Xamarin e ReactiveUI (20)

Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
 
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
 
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
 
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
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
TDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com JavaTDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com Java
 
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.
 
TDC2016SP - Web Moderna além do Front-End com AngularJS
TDC2016SP - Web Moderna além do Front-End com AngularJSTDC2016SP - Web Moderna além do Front-End com AngularJS
TDC2016SP - Web Moderna além do Front-End com AngularJS
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetos
 
Orquestração de containers com Rancher
Orquestração de containers com RancherOrquestração de containers com Rancher
Orquestração de containers com Rancher
 
Apache e Java
Apache e JavaApache e Java
Apache e Java
 
InterCon 2017 - Desbravando o Mundo da Programação Reativa - Erich Oliveira
InterCon 2017 - Desbravando o Mundo da Programação Reativa - Erich OliveiraInterCon 2017 - Desbravando o Mundo da Programação Reativa - Erich Oliveira
InterCon 2017 - Desbravando o Mundo da Programação Reativa - Erich Oliveira
 
Kafka: Uma introdução para Desenvolvedores e Arquitetos
 Kafka: Uma introdução para Desenvolvedores e Arquitetos Kafka: Uma introdução para Desenvolvedores e Arquitetos
Kafka: Uma introdução para Desenvolvedores e Arquitetos
 
java
javajava
java
 
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - MarçoASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
 
Ruby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e PráticaRuby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e Prática
 
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQLVacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
 
Desenvolvimento RIA com Java
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
Desenvolvimento RIA com Java
 
Cloudwalker - processamento distribuído em nuvem
Cloudwalker - processamento distribuído em nuvemCloudwalker - processamento distribuído em nuvem
Cloudwalker - processamento distribuído em nuvem
 

Programando interfaces reativas com Xamarin e ReactiveUI