27
Programando interfaces reativas com Xamarin e ReactiveUI Mahmoud Ali Desenvolvedor @ Lambda3 @akamud | [email protected]

Programando interfaces reativas com Xamarin e Reactive UI

Embed Size (px)

Citation preview

Page 1: Programando interfaces reativas com Xamarin e Reactive UI

Programando interfaces reativas com Xamarin e

ReactiveUI

Mahmoud Ali

Desenvolvedor @ Lambda3

@akamud | [email protected]

Page 2: Programando interfaces reativas com Xamarin e Reactive UI

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

Page 3: Programando interfaces reativas com Xamarin e Reactive UI

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 Xamarin e Reactive UI

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...

Page 5: Programando interfaces reativas com Xamarin e Reactive UI

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

Page 6: Programando interfaces reativas com Xamarin e Reactive UI

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

Page 7: Programando interfaces reativas com Xamarin e Reactive UI

Streams

Tudo pode ser transformado em um stream:

• Cliques de mouse

• Teclas digitadas

• Tasks assíncronas

• Timers

• Inclusive streams

Page 8: Programando interfaces reativas com Xamarin e Reactive UI

Streams

https://gist.github.com/staltz/868e7e9bc2a7b8c1f754

Page 9: Programando interfaces reativas com Xamarin e Reactive UI

Onde usar?

• Eventos que dependem de infraestrutura (filewatcher)

• Eventos real-time

• Eventos de UI

• Streams (ex.: rede)

Page 10: Programando interfaces reativas com Xamarin e Reactive UI

Quem está usando

Page 11: Programando interfaces reativas com Xamarin e Reactive UI

Demo: Rx

Page 12: Programando interfaces reativas com Xamarin e Reactive UI

Observable.Range

Page 16: Programando interfaces reativas com Xamarin e Reactive UI

Buffer

Page 20: Programando interfaces reativas com Xamarin e Reactive UI

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 21: Programando interfaces reativas com Xamarin e Reactive UI

ReactiveUI

Também é um framework MVVM

Page 22: Programando interfaces reativas com Xamarin e Reactive UI

ReactiveUI

Disponibiliza uma série de helpers para facilitar a criação das interfaces:

• Bind

• ObservableAsPropertyHelper

• ReactiveCommands

• ReactiveAdapters

Page 23: Programando interfaces reativas com Xamarin e Reactive UI

Demo: ReactiveUI

Page 25: Programando interfaces reativas com Xamarin e Reactive UI

Switch

Page 26: Programando interfaces reativas com Xamarin e Reactive UI

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)

Page 27: Programando interfaces reativas com Xamarin e Reactive UI

Obrigado!@akamud