Quindi ci sono molti modelli di design differenti in quest'area.
- Model View Presenter (mvp)
- Vista modello Visualizza relatore (mvvp)
- Controller vista modello
- Modello 2
e così via. Nel corso degli anni questi sono stati intrecciati, purificati insieme, modificati e applicati in un'ampia varietà di contesti.
Il punto importante qui è che il modello di progettazione MVC del 1977 è cambiato parecchio e non è più il modello di progettazione utilizzato dai framework web serveride. Come esempio nell'implementazione smalltalk originale, il Modello osserverebbe la vista delle modifiche, che non è più il caso in quanto il serveride non può semplicemente osservare gli elementi html nel browser degli utenti. Invece se la vista cambia, la vista invierà una richiesta al controller che aggiornerà la vista. Anche in questo caso l'implementazione MVC originale non viene seguita, poiché un aggiornamento del modello implicherebbe l'aggiornamento di tutte le viste dipendenti dal modello.
I moderni framework web seguono una semplice architettura a tre livelli nota anche come architettura Model 2.
Esistono naturalmente esempi di vere architetture MVC sul Web, ma questi sono spesso solo lato client, connessi a un server che segue l'architettura del Modello 2, poiché le viste sono xml e json e non sono osservate per le modifiche.
Esempi di architetture in mvc puro lato client sono Sencha Touch e Sproutcore.
Se hai MVC nel browser, mvc come sul server e mvc come il livello dati, hai un'implementazione mvc gerarchica.
Nota. Ho parlato solo di framework web, altre implementazioni di MVC come java swing e Flex ha altre differenze di implementazione.