Ich habe Rx in einem neuen Finanzanalyseprojekt verwendet, das alle Daten asynchron empfängt. Ich war ziemlich erstaunt über meine persönliche Produktivität und wie viel verständlicher mein ereignisbasierter Code ist (im Gegensatz zum vorherigen Modell von Event-Handlern mit komplexen verschachtelten ifs und zufälligen Statusvariablen überall). Hat noch jemand eine Chance, damit zu spielen, und wenn ja, was sind deine Gedanken?Hat RX Extensions das Problem der komplexen ereignisgesteuerten Programmierung "gelöst"?
Antwort
Ich glaube, die Reactive Extensions vereinfachen dramatisch einige Teile der komplexen, ereignisgesteuerten Programmierung, aber das Problem als Ganzes ist nicht "gelöst".
Es behandelt viele Situationen ist eine viel sauberere, eleganter Weise als bisher möglich. Es hilft jedoch nicht (unbedingt) immer auf der Erzeugungsseite einiger asynchroner Muster, bei denen die ereignisgesteuerte Programmierung immer noch schwierig ist. Rx konzentriert sich wirklich auf den Umgang mit der Subskriptionsseite des Events, aber nicht unbedingt auf die produktive Seite der Gleichung.
Für einige verschiedene Beispiele und eine Vorstellung dessen, was für zukünftige Versionen von C# in Betracht gezogen wird, um einige der komplexeren asynchronen Modelle zu handhaben, würde ich empfehlen, Luca Bolognese's PDC Talk zu sehen. Er präsentierte einige Ideen, an denen das Sprachteam arbeitet, um auf der Autorenseite der asynchronen Entwicklung zu helfen, wie zB eine "Iterator" -ähnliche Syntax, um direkt eine IAsync<T>
mit Sprachfunktionen zur Unterstützung der Generierung der Ereignisse zu erzeugen.
Ich habe gerade einen Webcast über RX-Erweiterungen gesehen, nicht mit ihm gespielt, und fand die Erklärung zu kompliziert ... Ich dachte, die Schöpfer waren Architektin-Astronauten.
Für jetzt sehe ich nur nicht, wo ist das Problem mit klassischen Event-Handler ... Ich habe immer elegante Lösung gefunden, wenn ich asynchrone Kommunikation zwischen einem Client und einem Dienst verwenden musste.
Allerdings bin ich neugierig auf Erfahrungen von anderen Leuten mit diesem Framework, je nach Antworten auf diesen Thread, werde ich es noch einmal versuchen.
Es gibt kein Problem, nur RX macht es einfacher. Zum Beispiel, ziehen und ablegen, um es zu verarbeiten, müssen Sie eine Markierung in Ihren Ereignissen weitergeben, ob die Maustaste geklickt wird oder nicht. Mit RX können Sie Mouse down, up, move usw. abonnieren und dann LINQ verwenden, um ein Ereignis zu verarbeiten, ohne dass zum Beispiel ein Flag im Ereignis übergeben werden muss. – epitka
In http://channel9.msdn.com/posts/DC2010T0100-Keynote-Rx-curing-your-asynchronous-programming-blues erklärt Bart de Smet hervorragend, wie die Behandlung von Ereignisströmen als ein erstklassiges Konzept das Abstraktionsniveau erhöht, indem man darüber nachdenkt, wie man z. Throttle oder DistinctUntilChanged jedes Mal dringend mit vielen fehleranfälligen Boilerplate-Code. Diese Operatoren kapseln diese Verhaltensweisen in wiederverwendbarer und zusammensetzbarer Weise ein. Meine Meinung ist also, dass es Raum für weitere Entwicklungen gibt (siehe z. B. die Sorgen über kalte Observablen), aber diese Werkzeuge sollten in jeder Entwickler-Toolbox enthalten sein. Die üblichen Kontrollflusskonstrukte können es für die single-threaded Ausführung schneiden, aber in der heutigen hochgradig parallelen, verteilten Welt denke ich, dass Observable (oder besser, EventStream/Property) eine richtige Abstraktion ist.
- 1. Empfehlungen zum Erlernen der Grundlagen der ereignisgesteuerten Programmierung?
- 2. Wie wird das Problem mit der Bildschirmgröße gelöst?
- 3. Javascript Problem gelöst, nicht verstehen, was das Problem war
- 4. Serialisierung Problem in komplexen Bean
- 5. RxJS warten bis das Versprechen gelöst
- 6. Arduino Serielle Programmierung Problem
- 7. Dynamische Programmierung Problem
- 8. Wie unterscheidet sich das Observer-Muster von einem ereignisgesteuerten Modell?
- 9. Mapping JSON Antwort auf Objekte mit Rx-Programmierung (Moya)
- 10. Video Codec Programmierung Problem
- 11. Gute Ressourcen für das Lernen zu entwickeln Firefox Extensions
- 12. konnte nicht gelöst Problem in Simulator Gerät
- 13. Regex-Implementierung mit ereignisgesteuerten Übereinstimmungen?
- 14. Reactive Extensions aufzuräumen
- 15. Java Socket Programmierung Problem
- 16. Swift Extensions
- 17. IConnectableObservables in Rx
- 18. Kurzer Dateiname erhalten, wenn LFN-Name zwei Extensions hat
- 19. "Prozessstart fehlgeschlagen: Fehler beim Abrufen der Aufgabe für Prozess 2282" Wie wird das Problem gelöst?
- 20. Tricky Programmierung Problem, das ich habe Probleme mit meinem Kopf
- 21. PHP Regex Problem mit einer komplexen Zielzeichenfolge
- 22. Rx in der MVC-Architektur
- 23. Reactive Extensions (Rx) - Probe mit letzten bekannten Wert, wenn kein Wert in vorhanden ist Intervall
- 24. MPI-Programmierung Problem mit MPI_Gather
- 25. Hat das Donnernde Herde Problem mehr auf Linux gibt es?
- 26. Reactive Extensions: eine Pipeline mit Rx Erstellen, die mit Dateien arbeitet
- 27. Töte einen Child-Prozess, der sich von der Shell gelöst hat
- 28. X509 Extensions
- 29. MS Extensions zu STL
- 30. Was bedeutet das in der iPhone Programmierung?
Reed, ausgezeichnete Antwort wie immer. Sie haben mir auch klar gemacht, dass ich meine Frage kalibriert haben sollte, um die Schwierigkeiten widerzuspiegeln, denen Entwickler als Konsumenten von Ereignissen gegenüberstehen, die eine schwierige Synchronisation erfordern, und ob rx diese Bedenken anspricht. – Pierreten