Question

Je comprends les bases de Rx. Là où je me bats est comment vous réellement utiliser au-delà des exemples académiques? Quels sont les scénarios réels simples communs, où Rx est une solution beaucoup mieux que ce que nous avons aujourd'hui dans .NET?

Était-ce utile?

La solution

Pour un tas de bons exemples, voir les 101 échantillons Rx wiki

Autres conseils

Rx vous permet d'écrire du code orchestrant événements simultanés ensemble. Si vous avez déjà utilisé le TPL (à savoir la tâche), puis a dû faire backflips alambiquées pour tenter de ContinueWith ou WaitAll sur les bonnes choses, Rx est pour vous.

Par exemple, le flux de travail « Pour chaque élément de ce tableau, appelez un service Web, et lorsque toutes ces demandes reviennent, faites autre chose. Si quelqu'un d'entre eux échouent, ne parviennent pas la chose ».

Divulgation, Shameless plug avant: Le livre que Jesse Liberté et moi avons écrit à propos de Rx a été conçu pour résoudre exactement cette question: « Comment puis-je utiliser Rx dans mon travail au jour le jour? »; "Que puis-je faire avec cela?"

Tout d'abord, IObservable est un événement . Donc partout où vous utilisez des événements en interne, vous pouvez utiliser IObservable -. Et si vous avez besoin d'appliquer plus tard LINQ à cet événement, vous êtes en mesure de le faire sans refactoring

En second lieu, RX est adapté à toutes les situations où vous devez exécuter votre code asynchronousely . Par exemple, appeler un service Web, ou le chargement d'une grande image.

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

  • measurments Device
  • Les données comming dans sur un bus de message

Dans les deux cas maintenant, le moyen standard pour recevoir les données via des événements, mais si je veux la syntaxe de requête ou d'une composition, puis RX me donne à l'endroit où les événements ne sont pas.

Rx est très générale donc il a une utilité illimitée, tout comme IEnumerable / IEnumerator a une utilité illimitée. IE tire les valeurs, les valeurs IO pousse.

Foreach est un exemple concret où IEnumerables sont utiles, mais cela n'explique pas IEnumerable, ou le rendement ou quoi que ce soit. Même chose avec Rx.

Être capable de regarder quelque chose soit un point de traction de vue, ou un point de vue de pousser, et d'être en mesure de contrôler la direction ou des moyens, est très puissant, parce que vous pouvez maintenant pousser et tirer des calculs autour à volonté, à l'aide des opérateurs de requête LINQ pour « libre », contre une IO, car il est le double de IE mathématique.

Je viens d'avoir mon premier regard sur Rx, mais un projet amusant, je vais l'utiliser pour la création est un widget qui affiche Silverlight activité dans notre application Web ASP.NET MVC (quelles méthodes d'action ont été appelés, par lequel l'utilisateur , etc). Il semble que Rx peut aider avec beaucoup de choses dans ce projet, comme la gestion de la concurrence et Throttling.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top