Er der en forskel mellem standardmønsteret "Model View Controller" og Microsoft's Model/View/ViewModel-mønster?
MVVM Model-View ViewModel svarer til MVC, Model-View Controller.
Controlleren er erstattet med en ViewModel. ViewModel sidder under UI-laget. ViewModel udsætter de data- og kommando-objekter, som visningen har brug for. Man kan se det som et containerobjekt, som viewet henter sine data og handlinger fra. ViewModel henter sine data fra modellen.
Russel East laver en blog, der diskuterer mere detaljeret [Why is MVVM is different from MVC] (http://russelleast.wordpress.com/2008/08/09/overview-of-the-modelview-viewmodel-mvvm-pattern-and-data-binding/)
For det første er MVVM en videreudvikling af MVC-mønstret, som bruger XAML til at håndtere visningen. Denne artikel skitserer nogle af facetterne af de to.
Hovedpointen i Model/View/ViewModel-arkitekturen synes at være, at der ovenpå dataene ("the Model") er der et andet lag af ikke-visuelle komponenter ("the ViewModel"), der kortlægger begreberne i dataene tættere på begreberne i visningen af dataene ("the View"). Det er ViewModel, som ViewModel binder sig til, ikke modellen direkte.
MVVM tilføjer viewmodellen til blandingen. Dette er vigtigt, da det giver dig mulighed for at bruge en stor del af WPF's bindende tilgang uden at lægge alle de UI-specifikke dele i din almindelige model.
Jeg kan tage fejl, men jeg er ikke sikker på, at MVVM virkelig tvinger controlleren ind i blandingen. Jeg synes, at konceptet er mere i tråd med: http://martinfowler.com/eaaDev/PresentationModel.html. Jeg tror at folk vælger at kombinere det med MVC, ikke at det er indbygget i mønstret.