Kann jemand Licht auf Unterschiede zwischen MVVM und dem neuen MVC-Muster werfen ?.
Ja: Bei Verwendung von ASP.NET MVC verwendet das MVC-Muster den Controller, um das Modell direkt in die Ansicht zu rendern. Dies ist für triviale Projekte mit einer kleinen Anzahl von Objekten durchaus akzeptabel. Wo dies zu einem Problem werden kann, besteht darin, dass die Bedenken der UI-Schicht in das zugrunde liegende (Domänen-) Modell übergehen können.
Wenn Sie MVVM verwenden, fügen Sie eine Abstraktion zwischen dem Modell und der Ansicht hinzu, bei der es sich natürlich um das ViewModel handelt. Dadurch kann der Autor ein Objekt in die Ansicht projizieren, das am besten von der Ansicht konsumiert wird. Das ViewModel kann Dinge enthalten, die im (Domänen-) Modell fehl am Platz wären. Die damit verbundenen Kosten sind, dass Sie über eine Zuordnungslogik verfügen müssen, die die Daten vom Modell auf das Ansichtsmodell überträgt. Werkzeuge wie AutoMapper können bei dieser Aufgabe helfen.
Ein einfaches Beispiel hierfür könnte sein, dass das Modell bestimmte Felder nicht wie erforderlich erfordert, sondern eine bestimmte Ansicht. Anstatt diese Logik in die Benutzerschnittstelle zu brennen, wenn sie an das ViewModel angehängt ist, können andere Benutzeroberflächen die gleiche VM konsumieren, ohne Logik zu duplizieren, die in der ersten Benutzerschnittstelle gebacken wurde.
MVC und MVVM sind eigentlich ganz anders. Es scheint ein gutes Stück des Missverständnisses von MVVM zu geben, wenn man mit ASP MVC spricht. Die Praxis, in MVC "View-Modelle" zu erstellen, bei denen es sich um spezielle Klassen für Feed-Views handelt, während gute Praktiken nicht dem Geist von MVVM entsprechen, ist in Wirklichkeit nur eine sauberere Version von MVC.
MVVM eignet sich besser für den Desktop mit WPF oder ähnlichem oder nur im Browser mit einem JavaScript-Framework wie knockout.js. Das Muster unterscheidet sich erheblich von MVC und beinhaltet, dass Ansichten dem Modell "zugeordnet" werden.
Ich würde vorschlagen, dass MVVM das Entwurfsmuster von Microsoft ist und dass ASP.NET MVC, das vor kurzem aktuell ist, eine spezifische Implementierung von Microsoft ist (die nicht unbedingt MVC oder MVVM entspricht, aber ähnlich ist). Und wie von Reed vorgeschlagen, gibt es MVC seit den 70er Jahren.
Sowohl MVC & amp; MVVM sind architektonische Muster. MVC hat seine Wurzeln zurück zu Smalltalk. ASP.NET MVC ist Microsofts Implementierung des MVC-Musters mit dem ASP.NET-Framework.
Beide Muster befassen sich mit der Trennung von Bedenken. MVC hat mehr mit der Interaktion verschiedener häufig verwendeter Schichten in einer Anwendung zu tun, wie Model (Datenschicht), View (Darstellungsschicht) und Controller (Business Logic Layer).
Mit erweiterten Databinding-Funktionen von WPF und Silverlight war MVVM besser geeignet und wurde als das nächste große Ding veröffentlicht. Martin Fowler verallgemeinerte diese Muster als Präsentationsmuster in seinem Buch Enterprise Application Architecture.
Ein Vorteil, den ich bei der Verwendung eines ViewModels sehe, ist, dass Sie den Anwendungscode mithilfe von Komponententests besser testen können. Aus diesem Grund finde ich MVVM oder mindestens das ViewModel-Bit, das auch in ASP.NET MVC-Anwendungen verwendet wird.
Tags und Links mvvm model-view-controller