web-dev-qa-db-fra.com

Bonne introduction au .NET Reactive Framework

Outre la documentation Microsoft, existe-t-il une bonne introduction et un bon tutoriel au framework Microsoft Reactive (Rx)?

En outre, quel est un bon exemple (avec du code) que Reactive facilite pour un problème de programmation qui est difficile à résoudre en utilisant des techniques de codage asynchrone conventionnelles?

215
LBushkin

Voici un site wiki avec de nombreux exemples de code montrant comment utiliser différentes fonctionnalités du framework .NET Rx: http://rxwiki.wikidot.com/101samples

J'ai trouvé que ce site était le plus complet et le plus rapide à démarrer.

84
LBushkin

[~ # ~] mise à jour [~ # ~] : Les articles de blog ci-dessous ont été remplacés par mon livre en ligne www.IntroToRx.com . C'est un livre complet de 19 chapitres disponible gratuitement. Vous pouvez le parcourir sur le Web ou télécharger la version mobi pour votre Kindle. Vous pouvez également l'obtenir directement auprès d'Amazon pour une somme minime (~ 99c/77p). Si le livre ne répond pas à vos besoins ou à vos attentes, faites-le moi savoir et nous ferons mieux pour la v2.

Merci pour le lien vers le post chaud/froid. Ceci est seulement une partie de la série complète ,

  1. Introduction à la Rx
  2. Méthodes statiques et d'extension
  3. Gestion à vie - Terminer et se désabonner
  4. Contrôle de flux
  5. Combinaison de plusieurs flux IObservable
  6. Planification et threading
  7. Observables chauds et froids
  8. Tester Rx
  9. Buffer, Window, Join et Group Join

Je vais continuer à mettre à jour ce blog avec plus de choses d'introduction à Rx.

Pour des informations plus avancées, vous devez vous rendre sur le Rx Forum (MSDN).

96
Lee Campbell
60
Summer-Time

Voici un exemple de ce qui est facile à faire avec une programmation réactive, mais désordonné (sinon difficile) avec des événements classiques, il dessine des lignes lorsque le bouton de la souris est enfoncé. Il est lisible, il n’existe pas de traitement d’état explicite:

var pen = new Pen(Color.Red, 3);
var graphics = this.CreateGraphics();

var mouseMoveWhileDown = 
    from md in this.GetMouseDown()
    from mv in this.GetMouseMove().Until(this.GetMouseUp())
    select new Point(mv.X, mv.Y);

mouseMoveWhileDown
    .Pairwise()
    .Subscribe(tup => graphics.DrawLine(pen, tup.Item1, tup.Item2)); 

(Je dois avouer que dans cet exemple, Pairwise () est développé localement ...)

La chose la plus importante sur IObservable est qu’il est "composable", tout comme IEnumerable.

Je recommande vivement la vidéo mentionnée dans une autre réponse. En fait, il existe plusieurs vidéos sur le sujet sur Channel9:

16
Benjol

Une fois que vous avez parcouru quelques-uns des éléments de base, y compris le HandsOnLab , assurez-vous de vérifier Les Observables chauds et froids de Lee Campbell , qui a supprimé pour moi une partie du mystère arcanique de Rx :)

12
sweetlilmre

Vous pouvez trouver cette série d’articles (il y en a quatre) sur LINQ réactif utiles: Programmation réactive (II.) - Présentation de LINQ réactif.

Il a un exemple d'écriture d'un jeu qui l'utilise, donc ce devrait être ce que vous recherchez.

4
James Black

Bizarrement, Reactive Extensions page d'accueil renvoie à une douzaine de vidéos et de blogs mais oublie de se connecter à la documentation de référence officielle complète. C'est dommage, si vous connaissez l'équipe, demandez-leur de réparer leur site web!

4
Colonel Panic

J'ai aussi trouvé Présentation du cadre réactif, partie I sur CodeBetter.com. Il y a une suite à la première partie sur le même site.

J'espère que cela t'aidera.

4
FrenchData

Jouez avec Rx Sandbox pour avoir une vue très intuitive de la signification des différents combinateurs. C'est le meilleur outil d'apprentissage que j'ai vu.

3
Omer Raviv
2
amazedsaint

Jesse Liberty a sorti un livre, publié en octobre 2011:

Amazon.com: Programmation d'extensions réactives et LINQ

Et il y a les vidéos de RxWorkshop sur Channel9:

Channel9: RxWorkshop

2
Shane Castle

Pour répondre à la deuxième question, voici un problème qui peut grandement bénéficier de Rx. Cela s'appelle "Devenir riche rapidement".

Vous avez développé un jeu du même nom et il se vend plutôt bien. Mais il est disponible uniquement dans vos magasins pour la vente en gros. Pour faciliter le traitement des espèces, vous avez un tapis roulant qui coule vers vous.

(S'il vous plaît n'hésitez pas à changer l'histoire ci-dessus :))

Les vendeurs y déposent des liasses d’argent, sans étiquette, indiquant le montant et le type de facture. Votre travail consiste à trier et à compter l'argent. Plus tard, quand vous aurez plus d’argent, vous pourrez en engager d’autres pour vous aider.

Dans ce cas, la source est une source asynchrone de liasses de billets (Producer). Vos employés et vos fournisseurs attendent de l’argent, mais vous devez les utiliser, les décompresser et utiliser votre logique d’affaires personnalisée pour les reconditionner de manière appropriée pour les payer.

Les vendeurs travaillent sur leur propre fil, de sorte qu'ils n'ont pas à attendre que vous comptiez ce qu'ils jettent à la ceinture. Votre temps est mieux utilisé si on vous dit que plus d'argent est disponible pour compter, en attendant, vous pouvez faire un autre travail.

Vous pouvez représenter chaque liasse par un octet [].

C'est une situation du monde réel assez commune; Lorsque vous récupérez une ressource [par exemple, des pages Web pour des moteurs de recherche, des images ou des vidéos] sur un réseau ou des données de périphériques, vous les obtenez en morceaux d'octets (éventuellement avec des en-têtes). Dans un seul thread ou dans un environnement multi-thread trop difficile à utiliser, vous avez tendance à les regrouper et à les traiter. Plus maintenant!!

2
Performance

En plus des liens d'Andreas Hoffmann (je les ai trouvés très utiles lorsque j'apprenais Rx)

Voici quelques-uns de Bart De Smet (un type très intelligent qui explique très bien les choses) Vidéos:

Un peu comme Rx:
Rx - Traitement de votre blues de programmation asynchrone

Quelques lignes de pensée + une philosophie, ces vidéos sont vraiment éclairantes:
Min LINQ - L’essence de LINQ
(La vidéo ci-dessus traite de la relation entre LINQ et d’autres choses, comme Rx)

Observations sur IQbservable - Le dual d'IQueryable

1
gideon

DEVHOL202 - Traitement du blues asynchrone avec les extensions réactives pour .NET (PDF, 2 Mo) est le meilleur laboratoire/didacticiel J'ai vu jusqu'à présent. Il vous guide à travers les bases de la bibliothèque, afin que vous puissiez construire et concevoir ce que vous avez appris.

Il existe également une version JavaScript. Recherchez dans Google les "Réactifs extensions sur le laboratoire".

1
John C

Votre clause "à l'exclusion de la documentation Microsoft" s'étend-t-elle aux vidéos de Channel 9?

Du créateur du cadre réactif Erik Meijer: - Expert à expert: Brian Beckman et Erik Meijer - Dans le cadre réactif .NET (Rx)

Neuf : Initiation aux extensions Rx pour .NET

1
Matt Breckon

J'ai aimé Introduction à Rx Part 1 - Types de clé, et les principales caractéristiques y étaient présentées.

0
vidalsasoon