Pergunta

Eu entendo o básico do Rx.O que estou lutando é como você realmente usaria isso além dos exemplos acadêmicos.Quais são alguns cenários comuns e simples do mundo real em que o Rx é uma solução muito melhor do que a que temos hoje no .NET?

Foi útil?

Solução

Para um monte de bons exemplos, veja O 101 RX Amostras Wiki

Outras dicas

O RX permite escrever código que orquestra eventos simultâneos juntos. Se você já usou a TPL (ou seja, tarefa), teve que fazer backflips complicados para tentar continuar com ou esperar as coisas certas, o RX é para você.

Por exemplo, o fluxo de trabalho de "para cada item nesta matriz, ligue para um serviço da web e quando todas essas solicitações voltarem, faça outra coisa. Se alguém falhar, falhe a coisa toda".

Divulgação, plugue sem vergonha: O livro que Jesse Liberty e eu escrevemos sobre RX foi projetado para resolver exatamente essa pergunta: "Como uso o RX no meu trabalho diário?"; "O que eu posso Faz com isso?"

Primeiro de tudo, IObservável é um evento.Portanto, em qualquer lugar em que você usar eventos internamente, você poderá usar IObservable - e se mais tarde precisar aplicar o LINQ a esse evento, poderá fazê-lo sem refatoração.

Em segundo lugar, o RX é adequado para qualquer situação em que você precise executar seu código de forma assíncrona.Por exemplo, chamar um serviço web ou carregar uma imagem grande.

Mas quando realmente começa a brilhar - se o seu programa atingir alguma "massa crítica" de uso do IObservable e você começar combinando diferentes observáveis, você ficaria surpreso como fácil algumas tarefas se tornam.

  • Medições de dispositivo
  • Dados entrando em um barramento de mensagem

Nos dois casos agora, a maneira padrão de receber os dados é através de eventos, mas se eu quiser sintaxe de consulta ou composição, o RX me entrega onde os eventos não.

O RX é muito geral, por isso possui utilidade ilimitada, assim como o iEnumerable/Ienumerator possui utilitário ilimitado. O IE puxa valores, IO empurra valores.

Foreach é um exemplo concreto de onde os ienumerables são úteis, mas isso não explica o Ienumerable, nem o rendimento ou qualquer coisa. O mesmo acontece com o RX.

Ser capaz de olhar para algo de um ponto de vista de tração ou um ponto de vista de push, e ser capaz de controlar a direção ou os meios é muito poderoso, porque agora você pode empurrar e puxar cálculos à vontade, usando a consulta LINQ Operadores de "Free", contra um IO, porque é o dual matemático do IE.

Acabei de dar meu primeiro olhar para o RX, mas um projeto divertido para o uso é criar um widget de Silverlight que exibe atividades em nosso aplicativo Web ASP.NET MVC (quais métodos de ação foram chamados, por qual usuário etc.) . Parece que o RX pode ajudar com muitas coisas neste projeto, como gerenciamento de simultaneidade e aceleração.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top