wake-up-neo.com

Gute Einführung in das .NET Reactive Framework

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

Was ist ein gutes Beispiel (mit Code), das Reactive für ein Programmierproblem vereinfacht, das mit herkömmlichen asynchronen Codiertechniken nur schwer zu lösen ist?

215
LBushkin

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

Ich fand, dass dies die umfassendste Website ist, mit der man am schnellsten anfangen kann.

84
LBushkin

[~ # ~] Update [~ # ~] : Die folgenden Blog-Beiträge wurden durch mein Online-Buch www.IntroToRx.com) ersetzt . Es ist ein umfassendes Buch mit 19 Kapiteln, das kostenlos erhältlich ist. Sie können es im Internet durchsuchen oder die Mobi-Version für Ihren Kindle herunterladen. Gegen eine geringe Gebühr (~ 99c/77p) können Sie es auch direkt von Amazon beziehen. Wenn das Buch Ihren Anforderungen oder Erwartungen nicht entspricht, lassen Sie es mich (den Autor) wissen und wir werden es für v2 besser machen.

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

  1. Einführung in Rx
  2. Statische und Erweiterungsmethoden
  3. Lebensdauerverwaltung - Abschließen und Abbestellen
  4. Ablaufsteuerung
  5. Mehrere IObservable-Streams kombinieren
  6. Scheduling und Threading
  7. Heiße und kalte Observables
  8. Testen von Rx
  9. Buffer, Window, Join und Group Join

Ich werde diesen Blog weiterhin mit einführenden Informationen zu Rx aktualisieren.

Weiterführende Informationen erhalten Sie im Rx-Forum (MSDN).

96
Lee Campbell
60
Summer-Time

Hier ist ein Beispiel für etwas, das leicht mit reaktiver Programmierung zu tun ist, bei klassischen Ereignissen jedoch chaotisch (wenn nicht herausfordernd) ist. Es zeichnet Linien, während die Maustaste gedrückt wird. 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 in diesem Beispiel Pairwise () einheimisch ist ...)

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

Ich kann das in einer anderen Antwort erwähnte Video nur empfehlen. Tatsächlich gibt es auf Channel9 verschiedene Videos zum Thema:

16
Benjol

Nachdem Sie einige grundlegende Dinge durchgearbeitet haben, darunter HandsOnLab , vergewissern Sie sich, dass Sie Lee Campbells Hot and Cold Observables durchgesehen haben :)

12
sweetlilmre

Sie können diese Artikelserie (es gibt vier) über reaktives LINQ nützlich finden: Reaktives Programmieren (II.) - Einführung in reaktives LINQ.

Er hat ein Beispiel dafür, wie man ein Spiel damit schreibt, also sollte es hoffentlich das sein, wonach Sie suchen.

4
James Black

Seltsamerweise verweist die Reactive Extensions Homepage auf ein Dutzend Videos und Blogs, vergisst jedoch, auf die umfassende offizielle Referenzdokumentation zu verweisen. Das ist eine Schande, wenn Sie das Team kennen, bitten Sie sie, ihre Website zu reparieren!

4
Colonel Panic

Ich fand auch Einführung in das Reactive Framework Teil I auf CodeBetter.com. Es gibt eine Fortsetzung des ersten Teils auf derselben Seite.

Ich hoffe, dies wird dir helfen.

4
FrenchData

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

3
Omer Raviv

Lesen Sie diese Artikel durch und laden Sie insbesondere den zugehörigen Quellcode herunter und spielen Sie damit.

Vertraue darauf, dass dies helfen wird

2
amazedsaint

Jesse Liberty hat ein Buch herausgebracht, das im Oktober 2011 veröffentlicht wurde:

Amazon.com: Reaktive Erweiterungen und LINQ programmieren

Und es gibt die RxWorkshop-Videos auf Channel9:

Channel9: RxWorkshop

2
Shane Castle

Um die zweite Frage zu beantworten, hier ist ein Problem, das sehr 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. Es ist jedoch nur in Ihren Geschäften für den Großhandel erhältlich. Um die Bargeldbearbeitung zu erleichtern, haben Sie ein Förderband, das auf Sie zuläuft.

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

Verkäufer legen gebundene Bündel mit Bargeld darauf, ohne dass Aufschriften über den Betrag und die Art der Rechnungen im Bündel angebracht sind. Ihre Aufgabe ist es, das Geld zu sortieren und zu zählen. Wenn Sie später mehr Geld bekommen, können Sie andere einstellen, die Ihnen helfen.

In diesem Fall ist die Quelle eine asynchrone Quelle von Geldbündeln (Produzent). Ihre Mitarbeiter und Lieferanten erwarten Geld, aber Sie müssen die Wads verbrauchen, sie auspacken und Ihre benutzerdefinierte Geschäftslogik verwenden, um sie bei Bedarf neu zu verpacken und zu bezahlen.

Die Verkäufer laufen auf ihrem eigenen Faden, 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 Sie erfahren, wann mehr Geld zum Zählen zur Verfügung steht. Bis dahin können Sie andere Arbeiten ausführen.

Sie könnten jedes Wad durch ein Byte [] darstellen.

Dies ist eine ziemlich häufige Situation in der realen Welt. 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 Multithread-Umgebung, mit der es zu schwierig ist, zu arbeiten, tendieren Sie dazu, sie zu aggregieren und zu verarbeiten. Nicht mehr!!

2
Performance

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

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

Ein bisschen ein Durchlauf von Rx:
Rx - Heilung Ihres asynchronen Programmier-Blues

Einige blutige Insides + einige Philosophien, diese Videos sind wirklich aufschlussreich:
Min LINQ - Die Essenz von LINQ
(Das obige Video handelt davon, wie sich LINQ auf andere Dinge bezieht, wie Rx)

Beobachtungen zu IQbservable - The Dual of IQueryable

1
gideon

DEVHOL202 - Härten des asynchronen Blues mit den Reactive Extensions for .NET (PDF, 2 MB) ist das beste Labor/Tutorial Ich habe bis jetzt gesehen. Es führt Sie durch die Grundlagen der Bibliothek, sodass Sie auf dem Gelernten aufbauen und gestalten können.

Es gibt auch eine JavaScript-Version. Durchsuchen Sie Google nach "Reactive Extensions Hands on Lab".

1
John C

Gilt Ihre Klausel "Microsoft-Dokumentation ausschließen" auch für die Videos auf Channel 9?

Vom Schöpfer des reaktiven Frameworks Erik Meijer: - Experte zu Experte: Brian Beckman und Erik Meijer - Innerhalb des .NET Reactive Framework (Rx)

Brandneu : Erste Schritte mit Rx Extensions for .NET

1
Matt Breckon

Ich mochte Einführung in Rx Teil 1 - Schlüsseltypen, und es zeigte die wichtigsten Funktionen.

0
vidalsasoon