78 votes

Bon exemple d'utilisation des extensions réactives

Je comprends les bases de Rx. Ce qui me pose problème, c'est comment vous utiliseriez cela au-delà des exemples académiques? Quels sont quelques scénarios simples et courants du monde réel où Rx est une solution bien meilleure que celle que nous avons aujourd'hui dans .NET?

41voto

sblom Points 15074

Pour une foule de bons exemples, voir le wiki 101 Rx Samples

26voto

Paul Betts Points 41354

Rx permet d'écrire du code qui orchestre simultanée des événements ensemble. Si vous avez déjà utilisé le TPL (c'est à dire des Tâches), puis avait à faire alambiquée des backflips pour essayer de ContinueWith ou WaitAll sur les bonnes choses, le Rx est fait pour vous.

Par exemple, le flux de travail "Pour chaque élément dans ce tableau, appeler un service web, et lorsque l'ensemble de ces demandes de revenir, de faire autre chose. Si l'un d'eux échoue, échoue à l'ensemble de la chose".

La divulgation, plug sans vergogne à l'avance: Le livre que Jesse Liberty et j'ai écrit à propos de Rx a été conçu pour résoudre exactement à cette question, "Comment puis-je utiliser Rx dans ma journée-à-jour de travail?"; "Que puis-je faire avec ça?"

25voto

Sergey Aldoukhov Points 8386

Tout d'abord, IObservable est un événement. Ainsi, dans n'importe où vous utilisez des événements en interne, vous pouvez utiliser IObservable - et si plus tard vous avez besoin d'appliquer de LINQ pour cet événement, vous êtes en mesure de le faire sans le refactoring.

Deuxièmement, RX est digne de toute situation où vous avez besoin pour exécuter votre code asynchronousely. Par exemple, l'appel d'un service web, ou le chargement d'une image de grande dimension.

Mais quand il commence vraiment à briller - si votre programme atteint une certaine "masse critique" de IObservable d'utilisation et vous commencez à en combinant différentes observables vous seriez étonné de voir comment facile certaines tâches deviennent.

5voto

Scott Weinstein Points 11404
  • Mesures de l'appareil
  • Données entrant sur un bus de messages

Dans les deux cas, la méthode standard pour recevoir les données consiste à utiliser des événements. Toutefois, si je souhaite utiliser la syntaxe de requête ou la composition, RX me la fournit là où les événements ne le permettent pas.

2voto

Richard Hein Points 6697

Rx est très générale, de sorte qu'il n'a pas de limite d'utilité, tout comme IEnumerable/IEnumerator n'a pas de limite d'utilité. IE tire valeurs, IO pousse les valeurs.

Foreach est un exemple concret d'où IEnumerables venir dans maniable, mais cela n'explique pas IEnumerable, ou de rendement ou de quoi que ce soit. Va de même avec les Rx.

Être capable de regarder quelque chose à partir d'un pull point de vue, ou pousser un point de vue, et d'être en mesure de contrôler la direction ou de moyens, est très puissant, parce que maintenant vous pouvez pousser et à tirer des calculs déplacer à volonté, à l'aide de LINQ opérateurs de requête pour le "libre", à l'encontre d'une IO, parce que c'est la mathématique double de l'ei.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X