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.
5. 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
6. Complexidades de interfaces reativas
○ Responsividade
○ Disponibilidade
○ Refresh instantâneo
○ Tratamento de erros
○ Carregamento
○ Políticas de retry
7. Reactive Extensions (Rx)
Reactive Extensions é uma biblioteca para compor programas
assíncronos e orientados a eventos utilizando observables e
operadores LINQ-style.
8. 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
10. 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
12. 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
24. 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
26. ReactiveUI
o Disponibiliza uma série de helpers para facilitar a criação das
interfaces:
• Bindings
• Ciclo de vida
• ObservableAsPropertyHelper
• ReactiveCommands
• ReactiveAdapters