Negli ultimi anni, i siti web sono passati da semplici pagine HTML con un po' di CSS ad applicazioni incredibilmente complesse su cui migliaia di sviluppatori lavorano contemporaneamente. Per lavorare con queste complesse applicazioni web, gli sviluppatori utilizzano diversi modelli di progettazione per strutturare i loro progetti, per rendere il codice meno complesso e più facile da lavorare. Il più popolare di questi modelli è MVC conosciuto anche come Controller vista modello.
Cos'è MVC?
IL Controller vista modello (MVC) framework è un modello architetturale/di progettazione che separa un'applicazione in tre componenti logici principali Modello , Visualizzazione , E Controllore . Ogni componente dell'architettura è creato per gestire aspetti di sviluppo specifici di un'applicazione. Isola la logica aziendale e il livello di presentazione l'uno dall'altro. Era tradizionalmente utilizzato per il desktop interfacce utente grafiche (GUI) . Al giorno d'oggi, MVC è uno dei framework di sviluppo web standard del settore più frequentemente utilizzati per creare progetti scalabili ed estensibili. Viene utilizzato anche per la progettazione di app mobili.
MVC è stato creato da Trygve Reenskaug . L'obiettivo principale di questo modello di progettazione era risolvere il problema degli utenti che controllano un set di dati ampio e complesso suddividendo un'applicazione di grandi dimensioni in sezioni specifiche che hanno tutte il proprio scopo.
Caratteristiche di MVC:
- Fornisce una chiara separazione di logica aziendale, logica dell'interfaccia utente e logica di input.
- Offre il pieno controllo su HTML e URL, semplificando la progettazione dell'architettura delle applicazioni Web.
- È un potente componente di mappatura degli URL tramite il quale possiamo creare applicazioni con URL comprensibili e ricercabili.
- Supporta Sviluppo guidato dai test (TDD).
Per saperne di più sui vantaggi dell'utilizzo del framework MVC fare riferimento all'articolo – Vantaggi dell'utilizzo del framework MVC
Componenti di MVC:
Il framework MVC include i seguenti 3 componenti:
- Controllore
- Modello
- Visualizzazione

Progettazione dell'architettura MVC
Controllore:
Il controller è il componente che consente l'interconnessione tra le visualizzazioni e il modello quindi funge da intermediario. Il controller non deve preoccuparsi della gestione della logica dei dati, dice semplicemente al modello cosa fare. Elabora tutta la logica aziendale e le richieste in arrivo, manipola i dati utilizzando il file Modello componente e interagire con il componente Visualizzazione per eseguire il rendering dell'output finale.
python stampa a 2 cifre decimali
Visualizzazione:
IL Visualizzazione Il componente viene utilizzato per tutta la logica dell'interfaccia utente dell'applicazione. Genera un'interfaccia utente per l'utente. Le visualizzazioni vengono create dai dati raccolti dal componente del modello, ma questi dati non vengono acquisiti direttamente ma tramite il controller. Interagisce solo con il controller.
Modello:
IL Modello Il componente corrisponde a tutta la logica relativa ai dati con cui lavora l'utente. Può rappresentare i dati trasferiti tra i componenti View e Controller o qualsiasi altro dato relativo alla logica aziendale. Può aggiungere o recuperare dati dal database. Risponde alla richiesta del controller perché il controller non può interagire con il database da solo. Il modello interagisce con il database e restituisce i dati richiesti al controller.
Funzionamento del framework MVC con un esempio:
Immaginiamo che un utente finale invii una richiesta a un server per ottenere un elenco di studenti che studiano in una classe. Il server invierebbe quindi quella richiesta a quel particolare controller che gestisce gli studenti. Tale controllore richiederebbe quindi al modello che gestisce gli studenti di restituire un elenco di tutti gli studenti che studiano in una classe.

Il flusso di dati nei componenti MVC
Il modello interrogherebbe il database per l'elenco di tutti gli studenti e quindi restituirebbe l'elenco al controller. Se la risposta del modello avesse esito positivo, il controllore chiederebbe alla vista associata agli studenti di restituire una presentazione dell'elenco degli studenti. Questa visualizzazione prenderebbe l'elenco degli studenti dal controller e trasformerebbe l'elenco in HTML che può essere utilizzato dal browser.
classe vs oggetto in Java
Il controller quindi prenderebbe quella presentazione e la restituirebbe all'utente. Concludendo così la richiesta. Se in precedenza il modello restituiva un errore, il controller gestiva quell'errore chiedendo alla vista che gestisce gli errori di eseguire il rendering di una presentazione per quel particolare errore. La presentazione dell'errore verrebbe quindi restituita all'utente invece della presentazione dell'elenco degli studenti.
Come possiamo vedere dall'esempio sopra, il modello gestisce tutti i dati. La vista gestisce tutte le presentazioni e il controller dice semplicemente al modello e alla vista cosa fare. Questa è l'architettura di base e il funzionamento del framework MVC.
Il modello architettonico MVC ci consente di aderire ai seguenti principi di progettazione:
1. Dividere e conquistare. I tre componenti possono essere progettati in qualche modo in modo indipendente.
2. Aumentare la coesione. I componenti hanno una coesione dei livelli più forte rispetto a quando la vista e il controller fossero insieme in un unico livello dell'interfaccia utente.
3. Ridurre l'accoppiamento. I canali di comunicazione tra i tre componenti sono minimi e facili da trovare.
4. Aumentare il riutilizzo. La visualizzazione e il controller normalmente fanno ampio uso di componenti riutilizzabili per vari tipi di controlli dell'interfaccia utente. La UI, però, diventerà application-specific, quindi non sarà facilmente riutilizzabile.
5. Progettare per la flessibilità. Di solito è abbastanza semplice modificare l'interfaccia utente cambiando la visualizzazione, il controller o entrambi.
Vantaggi di MVC:
- I codici sono facili da mantenere e possono essere estesi facilmente.
- Il MVC modello il componente può essere testato separatamente.
- I componenti di MVC possono essere sviluppati simultaneamente.
- Riduce la complessità dividendo un'applicazione in tre unità. Modello, vista e controller.
- Supporta Sviluppo guidato dai test (TDD).
- Funziona bene per le app Web supportate da grandi team di web designer e sviluppatori.
- Questa architettura aiuta a testare i componenti in modo indipendente poiché tutte le classi e gli oggetti sono indipendenti gli uni dagli altri
- Ottimizzazione per i motori di ricerca (SEO) Amichevole.
Svantaggi di MVC:
- È difficile leggere, modificare, testare e riutilizzare questo modello
- Non è adatto per la realizzazione di piccole applicazioni.
- L'inefficienza dell'accesso ai dati in vista.
- La navigazione nel framework può essere complessa poiché introduce nuovi livelli di astrazione che richiedono agli utenti di adattarsi ai criteri di scomposizione di MVC.
- Aumento della complessità e inefficienza dei dati
Framework MVC popolari:
Di seguito sono elencati alcuni dei framework MVC più popolari e ampiamente utilizzati.
- Rubino sui binari
- Django
- CherryPy
- Primavera MVC
- Catalizzatore
- Rotaie
- Quadro Zend
- Alimenta PHP
- Laravel
- Sinfonia
MVC viene generalmente utilizzato su applicazioni eseguite su una singola workstation grafica. La divisione dei componenti logici consente leggibilità e modularità oltre a renderlo più confortevole per la parte di testing.