Introduzione al pattern architetturale MVC e ai Frameworks

Scritto da Gianluca il 14 January 2010

Pubblicato in Web Development

A livello di progettazione, quindi successivamente di implemetazione, per semplificare la struttura di applicazioni più o meno complesse si necessita di design pattern ovvero di modelli di lavoro che servono a dare “una soluzione generale ad un problema riccorrente”. In altre parole si tratta di metodi di approccio standardizzati atti alla risoluzione di una classe di problemi che hanno particolari caratteristiche in comune.

Nell’ingegneria del software ne esistono varie categorie, anche a seconda del tipo di classificazione, in particolare il pattern che andremo a vedere noi oggi (l’MVC) appartiene ai pattern architetturali. Questi si discostano leggermente dai deisgn pattern originali prendendone una visione ancora più ampia, si tratta della stessa categoria per esempio a cui appartiene il modello Client-Server.

MVC

MVC è l’acronimo di Model-View-Controller (italianizzato in Modello-Visualizzazione-Controller) appunto come dicevamo prima un pattern architetturale impiegato in ingegneria del software per dividere in 3 parti, idealmente indipendenti, l’applicazione che si vuole sviluppare.

Queste tre componenti si occupano ognuna di un compito diverso in modo da dividere il controllo dell’applicazione, la struttura dati e la visualizzazione.

Vediamo nel dettaglio le tre parti:

  • il modello si occupa della gestione dei dati quindi dell’interazione con il database e dell’astrazione degli stessi.
  • la visualizzazione si occupa dell’interazione con l’utente e quindi della visualizzazione dei dati con una certa formattazione
  • infine il controller riceve i comandi inviati dall’utente alla visualizzazione si occupa dell’eventuale elaborazione del passaggio al modello e di nuovo della risposta alla visualizzazione, in pratica serve a modificare lo stato degli altri due componenti.

In questa immagine vediamo una rappresentazione leggermente differente dal modello MVC appena esposto, qua abbiamo in più il browser che rappresenta l’utente che interagisce con l’applicazione e invia i dati al controller.

Nel nostro modello invece l’utente invia i dati comunque al controller ma attraverso la visualizzazione, il funzionamento è comunque identico

I vantaggi

Questa strutturazione del progetto se applicata nelle giuste situazioni, ovvero ad applicazioni medio/grosse, nonostante un lavoro progettuale più impegnativo apporta enormi vantaggi come:

  • facilitare il riutilizzo del codice, più una parte del lavoro è indipendente dal resto più possibilità ci sono che ci possa venire utile per altre applicazioni
  • utile per suddividere il lavoro nel caso ci debbano lavorare più persone o team
  • utilizzando un modello rigido e regole standard facilita un eventuale lavoro di manutenzione e agevola la comprensione anche da parte di altri programmatori
  • nel caso si cambi tipo di database sarà possibile adattare l’applicazione senza dover mettere mano a tutto il codice ma solo al modello quindi maggiore flessibilità

A questo punto vi sarete immaginati che questo ci può essere molto di aiuto nello sviluppo in particolare di applicazioni web ma forse vi starete anche chiedendo come si può implementare tutto ciò. A questo scopo ci vengono in aiuto i frameworks.

Frameworks

Un framework è una struttura di supporto allo sviluppo di un software in particolare nel caso di applicazioni web si tratta di codice sorgente già scritto che ci offre alcuni strumenti per sviluppare e supportare l’applicazione vera e propria.

Esistono framework per vari linguaggi come per il Python, il Ruby e il Java ma quelli di cui parlerò e per il quale mi è servito come introduzione questo post sono i frameworks MVC (quindi basati sul pattern Model-View-Controller) sviluppati in PHP in particolare Symfony, Zend Framework.

Prossimamente vedremo più nel dettaglio questi frameworks e come ci possono essere di aiuto per applicare il modello MVC.

Cosa ne pensate? Voi utilizzate già questi strumenti?

Condividi

Se ti è piaciuto questo post e per sostenere il mio blog condividilo, lascia un commento e se vuoi ancora seguirmi abbonati al mio feed

Buzz This! Share

Non ci sono ancora commenti!

Inserisci un commento

Ultimi Tweet

...solo un attimo. Sto caricando i tweets, se non si sono caricati è perchè probabilmente i server di twitter sono sovraccarichi

Seguimi su twitter

Foto su flickr

FrancoforteEiffelAmsterdamAmsterdamLa libertà guida il popoloSony CenterVillaggio Olimpico Monaco di BavieraFernsehturmPiazza MazziniCarlsbergCopenhagenIn treno verso Copenhagen Seguimi su Flickr