Reaktive Programmierung und MVVM sind zwei Ansätze, mit denen das Problem der Trennung der Domänenschicht von der Benutzeroberfläche behoben werden kann.
- MVVM definiert dazu ein Ansichtsmodell, bei dem es sich um eine Datenstruktur handelt, die UI-Komponenten zugeordnet ist. Die Benutzeroberfläche zeigt die Daten an und aktualisiert sie möglicherweise, wenn ein Benutzer auftritt.
- Ein reaktives Framework definiert ein Diagramm von Observablen, die die Benutzeroberfläche darüber informieren, dass sich einige Daten geändert haben
Reaktive Frameworks gewinnen sowohl auf Mainstream-Plattformen (mit Rx in .net & java, react.js) als auch an experimentelleren Orten (FRP in haskell) an Bedeutung.
Ich habe hauptsächlich MVVM mit Winkel verwendet und finde das Verhältnis von Einfachheit zu Ausdruckskraft ziemlich zufriedenstellend, obwohl ich nur an kleinen / mittleren Projekten damit gearbeitet habe.
Was kauft ein reaktives Framework dem Entwickler, was mvvm nicht tut?
Gibt es wirklich einen Unterschied? Beispielsweise wird knockout.js als mvvm-Framework beworben, hat jedoch ein reaktives Gefühl in der Benutzeroberfläche:
this.firstName = ko.observable("John");
this.lastName = ko.observable("Smith");
this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this);
Antworten:
Dies sind verschiedene nicht konkurrierende Konzepte, und sie können leicht zusammenarbeiten, um ein großartiges Ergebnis zu erzielen.
In Laienbegriffen:
MVVM ist nützlich, um dem Durcheinander von Codebehind (GUI / Modellkopplung) zu entkommen. Ein reaktiver Ansatz ist nützlich, um die Ereignis- / Rückruf-Unordnung zu verringern.
Ich würde empfehlen, etwas über XAML / WPF zu lernen, da Microsoft der ursprüngliche Erfinder der MVVM ist. Microsoft hat auch eine sehr gute Implementierung des reaktiven Ansatzes erstellt: Reactive Extensions.
Hier ist ein anständiger Versuch, sie zu kombinieren:
http://www.reactiveui.net https://github.com/reactiveui/ReactiveUI
Verwandte SO-Frage:
/programming/1763411/reactive-extensions-rx-mvvm
quelle