O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Interfaces reativas com ReactiveUI no Xamarin.Forms

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
Gerenciamento de Memória
Gerenciamento de Memória
Carregando em…3
×

Confira estes a seguir

1 de 30 Anúncio

Interfaces reativas com ReactiveUI no Xamarin.Forms

Baixar para ler offline

Não faltam frameworks MVVM para a plataforma Xamarin, o ReactiveUI (RxUI) (http://reactiveui.net/) é mais um deles, mas o que o torna o interessante é que quem já está acostumada a programar utilizando Reactive Extensions (Rx) se sentirá em casa, com uma API mais intuitiva é possível criar interfaces gráficas responsiva, reativas e testáveis. Com suporte a praticamente todas plataformas do .NET, o ReactiveUI traz vários benefícios e você pode adotar somente as partes que julgar mais interessante. Veja como começar a utilizar ReactiveUI em um projeto Xamarin.Forms aos poucos, sem a necessidade de fazer grandes refatorações na sua aplicação já existente.

Não faltam frameworks MVVM para a plataforma Xamarin, o ReactiveUI (RxUI) (http://reactiveui.net/) é mais um deles, mas o que o torna o interessante é que quem já está acostumada a programar utilizando Reactive Extensions (Rx) se sentirá em casa, com uma API mais intuitiva é possível criar interfaces gráficas responsiva, reativas e testáveis. Com suporte a praticamente todas plataformas do .NET, o ReactiveUI traz vários benefícios e você pode adotar somente as partes que julgar mais interessante. Veja como começar a utilizar ReactiveUI em um projeto Xamarin.Forms aos poucos, sem a necessidade de fazer grandes refatorações na sua aplicação já existente.

Anúncio
Anúncio

Mais Conteúdo rRelacionado

Semelhante a Interfaces reativas com ReactiveUI no Xamarin.Forms (20)

Mais de akamud (20)

Anúncio

Mais recentes (20)

Interfaces reativas com ReactiveUI no Xamarin.Forms

  1. 1. Interfaces reativas com ReactiveUI no Xamarin.Forms Mahmoud Ali @akamud Developer @ Lambda3 Microsoft MVP
  2. 2. Interfaces Reativas ○ Usuários esperam interfaces reativas e respostas em milisegundos e 100% de disponibilidade ○ Seu sistema precisa ser resistente a falhas https://www.reactivemanifesto.org/pt-BR
  3. 3. Complexidades de interfaces reativas ○ Responsividade ○ Disponibilidade ○ Refresh instantâneo ○ Tratamento de erros ○ Carregamento ○ Políticas de retry
  4. 4. Reactive Extensions (Rx) Reactive Extensions é uma biblioteca para compor programas assíncronos e orientados a eventos utilizando observables e operadores LINQ-style.
  5. 5. Reactive Extensions ○ Criado pela Microsoft pelo mesmo time de desenvolvedores do LINQ ○ Conceitos de paradigma funcional ○ Utiliza o design pattern: Observer ○ Portada para várias linguagens: Javascript, Java, Ruby, Python... ○ Todo baseado no conceito de streams ○ Possui uma série de operadores para transformar streams Erik Meijer
  6. 6. Streams
  7. 7. Streams ○ Funciona como uma esteira de produção ○ É uma sequência de eventos ordenados por tempo ○ É a base do Rx (Observable<T> no .NET) ○ É assíncrono e push-based ○ Podem ser transformados de diversas maneiras
  8. 8. Streams, só que mais vida loka
  9. 9. 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 imutáveis ○ São disposables
  10. 10. Streams https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
  11. 11. Síncrono x Assíncrono Um item Múltiplos itens Síncrono T Get() IEnumerable<T> Get() Assíncrono Task<T> Get() Observable<T> Get()
  12. 12. Síncrono x Assíncrono - Pessoa Um item Múltiplos itens Síncrono Pessoa ObterPessoa() IEnumerable<Pessoa> ObterPessoas() Assíncrono Task<Pessoa> ObterPessoa() Observable<Pessoa> ObterPessoas()
  13. 13. Streams ○ Tudo pode ser transformado em um stream: ○ Cliques de mouse ○ Teclas digitadas ○ Tasks assíncronas ○ Timers ○ Inclusive streams
  14. 14. Streams https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
  15. 15. Onde usar? ○ Eventos que dependem de infraestrutura (FileWatchers) ○ Eventos real-time ○ Eventos de UI ○ Streams (ex.: rede)
  16. 16. Quem usa?
  17. 17. Demo: Reactive Extensions
  18. 18. Observable.Range
  19. 19. Throttle (debounce)
  20. 20. Buffer
  21. 21. ReactiveUI (RxUI) ○ Framework open source para facilitar a utilização de Reactive Extensions na criação de interfaces reativas em qualquer plataforma, reaproveitando código
  22. 22. ReactiveUI ○ Também é um framework MVVM
  23. 23. ReactiveUI o Disponibiliza uma série de helpers para facilitar a criação das interfaces: • Bindings • Ciclo de vida • ObservableAsPropertyHelper • ReactiveCommands • ReactiveAdapters
  24. 24. “Mas o Xamarin.Forms já é um framework MVVM, eu preciso de outro?
  25. 25. Demo: ReactiveUI
  26. 26. Referências ○ The introduction to Reactive Programming you've been missing ○ http://reactivex.io/ ○ http://rxmarbles.com/ ○ http://www.introtorx.com/ ○ http://reactiveui.net/ ○ https://bitbucket.org/achary/rx-marbles/ ○ https://github.com/toggl/mobileapp/ ○ https://github.com/akamud/XamarinForms.RxUI
  27. 27. Obrigado! Perguntas? @akamud

×