Bon exemple d’utilisation des extensions réactives

Je comprends les bases de Rx. Où est-ce que je me bats, comment utiliseriez-vous cela au-delà des exemples académiques? Quels sont les scénarios courants, simples et réels, dans lesquels Rx est une solution bien meilleure que celle que nous avons aujourd’hui dans .NET?

    Pour un tas de bons exemples, voir le wiki 101 Rx Samples

    Rx vous permet d’écrire du code qui orchestre des événements simultanés. Si vous avez déjà utilisé la TPL (c.-à-d. Task), vous devez alors faire des backflips compliqués pour essayer ContinueWith ou WaitAll sur les bonnes choses, Rx est pour vous.

    Par exemple, le workflow «Pour chaque élément de ce tableau, appelez un service Web et, lorsque toutes ces requêtes sont renvoyées, faites autre chose. Si l’une d’entre elles échoue, échouez tout».

    Disclosure, Shameless plug ahead: Le livre que Jesse Liberty et moi-même avons écrit sur Rx a été conçu pour résoudre exactement cette question: “Comment utiliser Rx dans mon travail quotidien?”; “Que puis-je faire avec ça?”

    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 devez ultérieurement appliquer LINQ à cet événement, vous pouvez le faire sans refactoring.

    Deuxièmement, RX est adapté à toutes les situations où vous devez exécuter votre code de manière asynchrone . Par exemple, appeler un service Web ou charger une grande image.

    Mais quand il commence vraiment à briller – si votre programme atteint une “masse critique” d’utilisation d’IObservable et que vous commencez à combiner différentes observables, vous serez étonné de la facilité avec laquelle certaines tâches deviennent.

    • Mesures de l’appareil
    • Entrée de données sur un bus de messages

    Dans les deux cas, la méthode standard pour recevoir les données est via les événements, mais si je veux une syntaxe ou une composition de requête, alors RX me le donne là où les événements ne le sont pas.

    Rx est très général donc il a un utilitaire illimité, tout comme IEnumerable / IEnumerator a un utilitaire illimité. IE tire des valeurs, IO pousse des valeurs.

    Foreach est un exemple concret de la façon dont IEnumerables est utile, mais cela n’explique pas IEnumerable, ni le rendement, ni rien. Même chose avec Rx.

    Être capable de regarder quelque chose d’un sharepoint vue tiré, ou d’un sharepoint vue push, et être capable de contrôler la direction ou les moyens, est très puissant, car maintenant vous pouvez pousser et tirer des calculs à volonté, en utilisant la requête LINQ opérateurs pour “libre”, contre un IO, parce que c’est le dual mathématique d’IE.

    Je viens de regarder Rx, mais un projet amusant pour lequel je vais l’utiliser est la création d’un widget Silverlight qui affiche l’activité dans notre application Web ASP.NET MVC (quelles méthodes d’action ont été appelées, par quel utilisateur, etc.) . Il semble que Rx puisse aider beaucoup de choses dans ce projet, comme la gestion des access simultanés et la limitation des access.