Frage

Was ist LINQ to Ereignisse a.k.a RX-Framework auch bekannt als die Reactive Extensions in .NET 4.0 (aber auch als zurückportiert Versionen verfügbar)?

Mit anderen Worten, was ist die ganze Zeug in System.Reactive.dll für?

War es hilfreich?

Lösung

NET Rx-Team (das ist kein offizieller Name) festgestellt, dass jede Druckfolge (Veranstaltungen, Rückrufe) als Pull-Sequenz betrachtet werden (wie wir es normalerweise tun, während enumerables Zugriff) als auch - oder sie sind Dual-in der Natur . Kurz Beobachter / beobachtbaren Muster ist das duale Aufzählung Muster.

Also, was ist cool über diese Dualität?

Alles, was Sie mit Pull-Sequenzen tun (lesen Codierung deklarativen Stil) ist anwendbar Sequenzen als auch zu schieben. Hier sind einige Aspekte. Sie können Observable aus bestehenden Ereignisse erstellen und sie dann als Bürger erster Klasse in .NET verwenden - das heißt, können Sie eine beobachtbare von einem Ereignis erstellen, und das gleiche wie ein Objekt aus.

Wie IObservable die mathematische duale IEnumerable ist, .NET Rx erleichtert LINQ über Push-Sequenzen wie Events, ähnlich wie LINQ über IEnumerables

Es gibt mehr Freiheit, neue Ereignisse zu komponieren - Sie bestimmte Ereignisse aus den allgemeinen Ereignissen erstellen

.

NET Rx stellt zwei Schnittstellen, IObservable und IObserver, dass „eine Alternative bietet Eingangs- und Ausgangsadapter als Produzent und Verbraucher von Ereignisquellen und Senken zu verwenden“, und dies wird in Kürze die de-facto werden in einem asynchronen Code zu schreiben deklarative Weise. Hier ist ein kurzes Beispiel.

//Create an observable for MouseLeftButtonDown

var mouseLeftDown=Observable.FromEvent<MouseButtonEventArgs>  
        (mycontrol,"MouseLeftButtonDown");  

//Query the above observable just to select the points
var points = from ev in mouseEvents  
                 select ev.EventArgs.GetPosition(this);  

//Show points in the window's title, when ever user
//presses the left button of the mouse
points.Subscribe(p => this.Title = "Location ="  
                                        + p.X + "," + p.Y);

Sie können diese Stellen durchlaufen auch den Kopf und Schwanz im Detail zu erhalten. Haben Sie auch einen Blick auf den Quellcode bezieht sich auch.

diese Reihe von Artikeln Check out

Andere Tipps

Sie können mehr darüber lesen Sie hier: http://themechanicalbride.blogspot.com/2009/07 /introducing-rx-linq-to-events.html

Meine erste Begegnung war in diesem Blog, wie ich sein Buch auf F # lese: http://tomasp.net/articles/reactive-ii-csevents.aspx

Im Grunde meines Verständnis davon ist, dass, wenn Sie einen Ereignishandler für Mausbewegungen zu schreiben, zum Beispiel können Sie wollen ständig diese Ereignisse zu erfassen, und vielleicht in der Lage sein, wie viele Bewegungen oder Klicks zu zählen, aber im Grunde genommen Sie wollen dass die Informationen in mehr als nur als Event-Handler zu verwenden. So behandelt nur die Ereignisse als einen kontinuierlichen Strom.

Überprüfen Sie auch diesen Channel 9 Video out: Experte zu Experte: Brian Beckman und Erik Meijer - im Inneren des .NET Reactive Framework (Rx)

Von der Show Beschreibung:

  

Das .NET Reactive Framework (Rx) ist die mathematische Dual von LINQ to   Objekte. Es besteht aus einem Paar   Schnittstellen IObserver / IObservable dass   repräsentieren Push-basierte oder beobachtbaren,   Sammlungen, sowie eine Bibliothek von   Erweiterungsmethoden, die die Umsetzung   LINQ Standard Query-Operatoren und   andere nützliche Strom Transformation   Funktionen.

Ich denke, das Wesen des RX ist Ändern der Winkel , mit denen betrachten wir Informationen. Natürlich ist jede Information ein Ergebnis eines Prozesses, der in dem Raum-Zeit-Kontinuum nimmt. Traditioneller Ansatz arbeitet mit der Projektion des Prozesses auf die „aktuelle“ Zeitebene, die Details der Zeitdimension als das Ergebnis zu verlieren.

RX arbeitet mit der Projektion in einer anderen Dimension, die Zeitkomponente als auch die Erfassung, so ist es kein Wunder, LINQ to RX ist ein Superset des regulären LINQ ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top