c# extensions - Gute Einführung in das.NET Reactive Framework




tutorial programming (14)

Sobald du einige der grundlegenden HandsOnLab , einschließlich des HandsOnLab , HandsOnLab bist, HandsOnLab du Lee Campbells Heiße und kalte Observables HandsOnLab , die für mich etwas von dem geheimnisvollen Mysterium aus Rx brachten :)

Gibt es neben der Microsoft-Dokumentation eine gute Einführung und ein Tutorial zum Microsoft Reactive (Rx) Framework?

Was ist ein gutes Beispiel (mit Code), dass Reactive ein Programmierproblem erleichtert, das mit herkömmlichen asynchronen Codiertechniken schwierig zu lösen ist?


Hier ist eine Wiki-Site mit vielen Codebeispielen, die zeigen, wie man verschiedene Funktionen des .NET Rx-Frameworks verwendet: http://rxwiki.wikidot.com/101samples

Ich fand, dass dies die umfassendste Website ist und diejenige, mit der am schnellsten begonnen wird.


Zusätzlich zu Andreas Hoffmanns Links (fand sie sehr hilfreich, als ich Rx lernte)

Hier sind einige von Bart De Smet (ein sehr kluger Typ, der Dinge wirklich gut erklärt) Videos:

Irgendwie ein Durchlauf von Rx:
Rx - Heilen Sie Ihre Asynchronous Programming Blues

Einige blutige Insider und einige Philosophie, diese Videos sind wirklich aufschlussreich:
Min LINQ - Die Essenz von LINQ
(Das obige Video befasst sich damit, wie sich LINQ auf andere Dinge bezieht, wie Rx)

Beobachtungen auf IQbservable - Der Dual von IQueryable



UPDATE : Die untenstehenden Blogposts wurden durch mein Online-Buch introtorx.com . Es ist ein umfassendes Buch mit 19 Kapiteln, das kostenlos zur Verfügung steht. Sie können es im Internet durchsuchen, oder laden Sie die Mobi-Version für Ihr Kindle. Sie können es auch direkt von Amazon gegen eine kleine Gebühr erhalten (~ 99c / 77p). Wenn das Buch nicht Ihren Bedürfnissen oder Erwartungen entspricht, lassen Sie mich (den Autor) wissen, und wir werden es besser für v2 machen.

Danke für den Link zur Hot / Cold Post. Dies ist nur ein Teil der vollständigen Serie ,

  1. Einführung in Rx
  2. Statische und Erweiterungsmethoden
  3. Lifetime Management - Abschließen und Abbestellen
  4. Ablaufsteuerung
  5. Kombinieren mehrerer IObservable-Streams
  6. Planen und Threading
  7. Heiße und kalte Observablen
  8. Testen von Rx
  9. Buffer, Window, Join und Group Join

Ich werde diesen Blog mit mehr Rx-Einführungen aktualisieren.

Für fortgeschrittenere Sachen möchten Sie zum Rx Forum (MSDN) gehen.



Um die zweite Frage zu beantworten, hier ist ein Problem, das viel von Rx profitieren kann. Es heißt "Werde schnell reich".

Du hast ein Spiel mit dem gleichen Namen entwickelt und es verkauft sich ziemlich gut. Aber es ist nur in Ihren Geschäften für den Großhandel verfügbar. Um die Bargeldverarbeitung zu erleichtern, haben Sie ein Förderband, das zu Ihnen fließt.

(Bitte zögern Sie nicht, die Geschichte oben zu ändern :))

Verkäufer setzen gebundene Geldbündel darauf, ohne Etiketten, die die Menge und die Art der Rechnungen in dem Bündel anzeigen. Ihre Aufgabe ist es, das Geld zu sortieren und zu zählen. Später, wenn Sie mehr Geld bekommen, können Sie andere anstellen, um Ihnen zu helfen.

In diesem Fall ist die Quelle eine asynchrone Quelle von Geldbündeln (Producer). Ihre Mitarbeiter und Lieferanten erwarten Geld, aber Sie müssen die Packs konsumieren, sie entpacken und Ihre eigene Geschäftslogik verwenden, um sie entsprechend neu zu paketieren.

Die Verkäufer laufen auf ihrem eigenen Thread, damit sie nicht darauf warten müssen, dass Sie zählen, was sie auf den Gürtel werfen. Ihre Zeit wird am besten genutzt, wenn Ihnen gesagt wird, wenn mehr Geld zur Verfügung steht, bis Sie weitere Arbeiten machen können.

Sie könnten jedes Kästchen mit einem Byte [] darstellen.

Dies ist eine ziemlich häufige reale Situation; Wenn Sie eine Ressource [z. B. Webseiten für Suchmaschinen, Bilder oder Videos] in einem Netzwerk oder Daten von Peripheriegeräten abrufen, erhalten Sie diese in Bytes (möglicherweise mit Kopfzeilen). In einem einzelnen Thread oder in einer Umgebung mit mehreren Threads, die zu schwer zu bearbeiten ist, neigen Sie dazu, sie zu aggregieren und zu verarbeiten. Nicht länger!!


Hier ist ein Beispiel für etwas, das leicht mit reaktiver Programmierung zu tun ist, aber unordentlich (wenn nicht herausfordernd) mit klassischen Ereignissen, es zeichnet Linien, während die Maustaste gedrückt ist. Es ist lesbar, es gibt keine explizite Statusbehandlung:

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)); 

(Ich muss gestehen, dass Pairwise () in diesem Beispiel selbstgewachsen ist ...)

Das Wichtigste an IObservable ist, dass es "zusammensetzbar" ist, genau wie IEnumerable.

Ich empfehle dringend das Video in einer anderen Antwort erwähnt. Tatsächlich gibt es auf Channel9 mehrere verschiedene Videos zum Thema:



MSDN Site für Rx-Framework

Für einen Entwickler, der tiefer geht, den Quellcode

Coole österreichische Keynote über Rx

Das ist das Beste, was ich gesehen habe: DevCamp 2010 Keynote - Rx: Heilen Sie Ihre asynchrone Programmierung Blues

Einige interessante Videos auf Kanal 9

Kim Hamilton und Wes Dyer: Inside .NET Rx und IObservable / IObserver im BCL (VS 2010)

Ein Interview mit dem Schöpfer von Rx: Experte zu Experte: Brian Beckman und Erik Meijer - Innerhalb des .NET Reactive Framework (Rx)

Eine Einführung vom Schöpfer von Rx

Ein Codeprojektartikel

Ein anderer Kurs erster Blog mit Links (neu)




Spielen Sie mit Rx Sandbox , um eine sehr intuitive Ansicht dessen zu erhalten, was die verschiedenen Kombinatoren bedeuten. Dies ist das beste Lernwerkzeug, das ich gesehen habe.


ANTS Profiler . Ich habe nicht viele benutzt, aber ich habe keine Beschwerden über ANTS. Die Visualisierung ist sehr hilfreich.







c# .net asynchronous system.reactive