Il componente centrale del MVC, il modello, cattura il comportamento dell'applicazione in termini di dominio del problema, indipendentemente dall'interfaccia utente.
Il modello gestisce direttamente i dati, la logica e le regole dell'applicazione. Una vista può essere una qualsiasi rappresentazione in output di informazioni, come un grafico o un diagramma. Sono possibili viste multiple delle stesse informazioni, come ad esempio un grafico a barre per la gestione e la vista tabellare per l'amministrazione. La terza parte, il controller, accetta l'input e lo converte in comandi per il modello e/o la vista.
== Utilizzo ==
Storicamente il pattern MVC è stato implementato lato server. Recentemente, con lo sviluppo e la parziale standardizzazione di [[JavaScript]] sono nate le prime implementazioni lato client.<ref>Leggere [http://www.html.it/articoli/javascript-mvc-1/ questa ottima introduzione]</ref>
=== Lato server ===
Originariamente impiegato dal linguaggio [[Smalltalk]], il pattern è stato esplicitamente o implicitamente sposato da numerose tecnologie moderne, come [[framework]] basati su [[PHP]] ([[Symfony]], [[Laravel]], [[Zend Framework]], [[CakePHP]], [[Yii framework]], [[CodeIgniter]]), su [[Ruby]] ([[Ruby on Rails]]), su [[Python]] ([[Django (informatica)|Django]], [[TurboGears]], [[Pylons]], [[Web2py]], [[Zope]]), su [[linguaggio Java|Java]] ([[Spring framework|Spring]], [[Java Server Faces|JSF]] e [[Struts]]), su [[Objective C]] o su [[.NET]].
A causa della crescente diffusione di tecnologie basate su MVC nel contesto di [[framework]] o piattaforma [[middleware]] per [[applicazione Web|applicazioni Web]], l'espressione '''framework MVC''' o '''sistema MVC''' sta entrando nell'uso anche per indicare specificamente questa categoria di sistemi (che comprende per esempio [[Ruby on Rails]], [[Apache Struts|Struts]], [[Spring framework|Spring]], Tapestry e [[Catalyst (software)|Catalyst]]).
=== Lato client ===
Negli ultimi anni è aumentata la richiesta di [[Rich Internet application]] che facciano chiamate asincrone al server ([[AJAX]]), senza fare redirect per visualizzare i risultati delle elaborazioni. Col crescere della quantità di codice JavaScript eseguito sul client, si è sentita l'esigenza di creare i primi framework che implementassero MVC in puro JavaScript. Uno dei primi è stato Backbone.js, seguito da una serie interminabile di altri framework, tra cui JavaScriptMVC, Ember ed AngularJS.
== Struttura ==
|