2. 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
3. Reactive Extensions (Rx)
Reactive Extensions é uma biblioteca para compor programas
assíncronos e orientados a eventos utilizando observables e
operadores LINQ-style.
4. 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...
5. 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
6. 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
7. Streams
Tudo pode ser transformado em um stream:
• Cliques de mouse
• Teclas digitadas
• Tasks assíncronas
• Timers
• Inclusive streams
20. ReactiveUI (RxUI)
Framework open source para facilitar a utilização de Rx na criação
de interfaces reativas em qualquer plataforma, reaproveitando
código
22. ReactiveUI
Disponibiliza uma série de helpers para facilitar a criação das
interfaces:
• Bind
• ObservableAsPropertyHelper
• ReactiveCommands
• ReactiveAdapters