Gibt es einen Unterschied zwischen dem standardmäßigen Model-View-Controller-Muster und dem Model/View/ViewModel-Muster von Microsoft?
MVVM Model-View ViewModel ist ähnlich wie MVC, Model-View Controller
Der Controller wird durch ein ViewModel ersetzt. Das ViewModel befindet sich unterhalb der UI-Schicht. Das ViewModel stellt die Daten- und Befehlsobjekte zur Verfügung, die der View benötigt. Man könnte es als ein Container-Objekt betrachten, von dem die Ansicht ihre Daten und Aktionen abruft. Das ViewModel bezieht seine Daten aus dem Model.
Russel East diskutiert in einem Blog detaillierter [Warum sich MVVM von MVC unterscheidet] (http://russelleast.wordpress.com/2008/08/09/overview-of-the-modelview-viewmodel-mvvm-pattern-and-data-binding/)
Zum einen ist MVVM eine Weiterentwicklung des MVC-Musters, das XAML für die Darstellung verwendet. Dieser Artikel beschreibt einige der Facetten der beiden.
Die Hauptaussage der Model/View/ViewModel-Architektur scheint zu sein, dass über den Daten ("das Model") eine weitere Schicht nicht-visueller Komponenten ("das ViewModel") liegt, die die Konzepte der Daten näher an die Konzepte der Ansicht der Daten ("die Ansicht") heranführen. Es ist das ViewModel, an das sich die View bindet, nicht das Model direkt.
MVVM fügt das View Model in den Mix ein. Dies ist wichtig, da es Ihnen erlaubt, eine Menge von der Bindung Ansatz von WPF zu verwenden, ohne dass alle, die UI-spezifische Stücke in Ihrem regulären Modell setzen.
Vielleicht liege ich falsch, aber ich bin mir nicht sicher, ob MVVM wirklich den Controller in den Mix zwingt. Ich finde, dass das Konzept eher mit http://martinfowler.com/eaaDev/PresentationModel.html übereinstimmt. Ich denke, dass die Leute sich dafür entscheiden, es mit MVC zu kombinieren, und nicht, dass es in das Muster eingebaut ist.