Globalcode – Open4education
Programando interfaces reativas com Xamarin e ReactiveUI
Mahmoud AliDesenvolvedor @ Lambda3
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
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 funcionalUtiliza o design pattern: ObserverPortada 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-basedPodem ser transformados de diversas maneiras
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
Globalcode – Open4education
Streams
https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
Globalcode – Open4education
Streams
Tudo pode ser transformado em um stream:Cliques de mouseTeclas digitadasTasks assíncronasTimersInclusive streams
Globalcode – Open4education
Streams
https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
Globalcode – Open4education
Onde usar?
Eventos que dependem de infraestrutura (filewatcher)Eventos real-timeEventos de UIStreams (ex.: rede)
Globalcode – Open4education
Quem está usando?
Globalcode – Open4education
Demo: Rx
Globalcode – Open4education
Observable.Range
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:
BindObservableAsPropertyHelperReactiveCommandsReactiveAdapters
Globalcode – Open4education
Demo: ReactiveUI
Globalcode – Open4education
Switch
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
Globalcode – Open4education
Obrigado!@akamud