![Page 1: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/1.jpg)
Globalcode – Open4education
Programando interfaces reativas com Xamarin e ReactiveUI
Mahmoud AliDesenvolvedor @ Lambda3
![Page 2: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/2.jpg)
Globalcode – Open4education
Interface Reativas
Usuários esperam interfaces reativas e respostas em milisegundos e 100% de disponibilidadeSeu sistema precisa ser resistente a falhas
http://www.reactivemanifesto.org/pt-BR
![Page 3: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/3.jpg)
Globalcode – Open4education
Reactive Extensions (Rx)
Reactive Extensions é uma biblioteca para compor programas assíncronos e orientados a eventos utilizando observables e operadores LINQ-style.
![Page 4: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/4.jpg)
Globalcode – Open4education
Reactive Extensions
Criado pela Microsoft pelo mesmo time de desenvolvedores do LINQ“LINQ para eventos”Conceitos de paradigma funcionalUtiliza o design pattern: ObserverPortada para várias linguagens: Javascript, Java, Ruby, Python...
![Page 5: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/5.jpg)
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-basedPodem ser transformados de diversas maneiras
![Page 6: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/6.jpg)
Globalcode – Open4education
Streams
Quem quiser tratar o conteúdo que está passando pela esteira precisa dar um subscribeNo padrão Observer: o stream (IObservable) é o subject, o subscriber é o observerEmite três estados: OnNext, OnError e OnCompletedSão disposables
![Page 7: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/7.jpg)
Globalcode – Open4education
Streams
https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
![Page 8: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/8.jpg)
Globalcode – Open4education
Streams
Tudo pode ser transformado em um stream:Cliques de mouseTeclas digitadasTasks assíncronasTimersInclusive streams
![Page 9: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/9.jpg)
Globalcode – Open4education
Streams
https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
![Page 10: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/10.jpg)
Globalcode – Open4education
Onde usar?
Eventos que dependem de infraestrutura (filewatcher)Eventos real-timeEventos de UIStreams (ex.: rede)
![Page 11: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/11.jpg)
Globalcode – Open4education
Quem está usando?
![Page 12: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/12.jpg)
Globalcode – Open4education
Demo: Rx
![Page 13: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/13.jpg)
Globalcode – Open4education
Observable.Range
![Page 15: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/15.jpg)
Globalcode – Open4education
Buffer
![Page 16: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/16.jpg)
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
![Page 17: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/17.jpg)
Globalcode – Open4education
ReactiveUI
Também é um framework MVVM
![Page 18: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/18.jpg)
Globalcode – Open4education
ReactiveUI
Disponibiliza uma série de helpers para facilitar a criação das interfaces:
BindObservableAsPropertyHelperReactiveCommandsReactiveAdapters
![Page 19: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/19.jpg)
Globalcode – Open4education
Demo: ReactiveUI
![Page 21: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/21.jpg)
Globalcode – Open4education
Switch
![Page 22: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/22.jpg)
Globalcode – Open4education
Referências
The introduction to Reactive Programming you've been missinghttp://rxmarbles.com/ http://www.introtorx.com/https://reactivex.slack.com/http://reactiveui.net/https://goo.gl/KazgWphttps://github.com/akamud/HackDaysRxUI
![Page 23: Programando interfaces reativas com ReacitveUI na plataforma Xamarin](https://reader036.vdocument.in/reader036/viewer/2022062400/587123961a28abe4448b59e9/html5/thumbnails/23.jpg)
Globalcode – Open4education
Obrigado!@akamud