Gibt es eine einfache Schritt-für-Schritt-Referenz zu MVVM?
Ja da ist. Schauen Sie sich das hier an.
Ist MVVM eine Supermenge oder eine Teilmenge von MVC?
MVVM gehört zur MVC-Familie. Wenn Sie das also überhaupt sagen können, handelt es sich um eine Teilmenge. Es ist eine Variante, die Benutzeroberfläche von der darunter liegenden Geschäftslogik zu entkoppeln. Ich würde es als Geschwister von MVC beschreiben. Seit den Anfängen von OOP haben Menschen nach Möglichkeiten gesucht, die Benutzeroberfläche von ihrer Logik zu entkoppeln. MVC war der erste Archetyp, der sich entwickelte. Es ist ziemlich einfach, obwohl die meisten Leute es nicht richtig verstehen. Die Ansicht ist nur ein Beobachter des Modells und ruft es bei Bedarf auf. Der Controller ist nur eine Strategie für die Ansicht, um mit dem Modell zu kommunizieren, beispielsweise wenn Sie ein austauschbares Verhalten benötigen (z. B. ReadonlyController, AdminController). MVC ist sehr erfolgreich und es ist wirklich eine gute Praxis, es anzuwenden.
MVVM ist eine spezielle Art von MVP-Muster, wie von Martin Fowler beschrieben . MVP versucht, die Ansicht so dumm wie möglich zu halten (während weiterhin Benutzereingaben usw. vorgenommen werden), wodurch die Testbarkeit verbessert wird. Es zielt auf eine Abstraktion der Sichtweise und der Interaktionslogik ab, die in den Präsentator gestellt werden soll. Der Präsentator kommuniziert ausschließlich mit dem Modell / der Geschäftslogik und aktualisiert die Ansicht. Martin Fowler beschreibt MVVM ziemlich genau in seinem Präsentationsmodellmuster.
Die Ansicht wird vollständig in ein ViewModel abstrahiert. Wenn View
jemand eine Immobilie ViewModel
braucht, muss er sie auch haben. Es (das ViewModel) soll völlig unabhängig von der zugrunde liegenden UI-Technologie sein, einer Abstraktion. Um zwischen View und ViewModel zu kommunizieren, muss ein Synchronisationsmuster verwendet werden (dh Observer). Dies ist in einer zustandslosen Webumgebung nicht einfach zu erreichen. MVVM unterscheidet sich von MVP, da die Ansicht nicht mehr an Ihr Modell / Ihre Geschäftslogik gebunden ist, sondern an ein ViewModel.
Welches Muster ist modern und welches sollte ich für Windows- und Webversionen meiner Anwendung wählen?
Das Präsentationsmodell (MVVM-ähnlich) sollte theoretisch völlig unabhängig von der verwendeten UI-Technologie sein. Der Synchronisationsaspekt muss jedoch abgedeckt werden. Dies kann einfach durch Binden an Befehle und Eigenschaften mit WPF erfolgen, wo der Synchronisationskleber bereits vorhanden ist. Bei ASP.NET ist dies eine andere Geschichte. Es gibt jedoch einen Artikel über CodeProject, in dem das Präsentationsmodellmuster für alle Windows-UI-Technologien verwendet wurde. Guck mal.
Ihre Absicht, dieselben Klassen für die ASP.Net- und WPF-basierte Benutzeroberfläche zu verwenden, ist nicht sehr praktisch. Die Datenbindung und die Verwendung von Javascript im Web unterscheidet sich stark von WPF. Die einzige Option, die mir einfällt, ist MVP mit vollständig passiver Ansicht . Theoretisch können Sie denselben Präsentator haben, der eine Web- und eine WPF-Seite ausfüllt.
In der Praxis werde ich eine Architektur entwickeln, bei der sich die meisten Geschäftsregeln in einer Webdienstschicht und zwei verschiedenen Präsentationsebenen mit so wenig Geschäftsregeln wie möglich befinden, die mit diesem Webdienst kommunizieren.
quelle