Programando interfaces reativas com ReacitveUI na plataforma Xamarin

Post on 08-Jan-2017

224 views 0 download

transcript

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

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:

BindObservableAsPropertyHelperReactiveCommandsReactiveAdapters

Globalcode – Open4education

Demo: ReactiveUI

Globalcode – Open4education

DistinctUntilChanged

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