Questo materiale fa parte della serie "Introduzione allo sviluppo aziendale". Articoli precedenti:
- sulla rete ;
- sull'architettura del software ;
- sui protocolli HTTP/HTTPS ;
- sulle nozioni di base di Maven ;
- sulle servlet (stiamo scrivendo una semplice applicazione web) ;
- sui contenitori servlet .
Storia di MVC
Le idee per MVC furono formulate da Trygve Reenskaug mentre lavorava allo Xerox PARC alla fine degli anni '70. A quei tempi, per lavorare con un computer era impossibile fare a meno di un titolo accademico e dello studio costante di voluminosa documentazione. Il problema che Reenskaug ha risolto insieme ad un gruppo di sviluppatori molto forti è stato quello di semplificare l'interazione dell'utente medio con un computer. Era necessario creare strumenti che, da un lato, fossero estremamente semplici e comprensibili e, dall'altro, consentissero di gestire un computer e applicazioni complesse. Reenskaug ha lavorato nel team che ha sviluppato il computer portatile "per bambini di tutte le età" - Dynabook, così come il linguaggio SmallTalk sotto la direzione di Alan Kay. Fu allora che furono stabiliti i concetti di un'interfaccia amichevole. Il lavoro di Reenskaug con il suo team ha influenzato notevolmente lo sviluppo del campo IT. Presentiamo un fatto interessante che non si riferisce direttamente a MVC, ma illustra il significato di tali sviluppi. Nel 2007, dopo la presentazione dell’iPhone di Apple, Alan Kay disse: “Quando è uscito il Macintosh, Newsweek mi ha chiesto cosa ne pensassi. Ho detto: questo è il primo personal computer degno di critica. Dopo la presentazione, Steve Jobs si è avvicinato e ha chiesto: l'iPhone è degno di critica? E ho detto, fallo cinque per otto pollici e conquisterai il mondo. Tre anni dopo, il 27 gennaio 2010, Apple ha introdotto l'iPad da 9,7 pollici. Cioè, Steve Jobs ha seguito quasi alla lettera il consiglio di Alan Kay. Il progetto su cui Rennskaug ha lavorato è durato 10 anni. E la prima pubblicazione su MVC da parte dei suoi creatori è stata pubblicata altri 10 anni dopo. Martin Fowler, autore di numerosi libri e articoli sull'architettura software, afferma di aver imparato MVC da una versione funzionante di SmallTalk. Poiché per molto tempo non sono state fornite informazioni su MVC dalla fonte primaria, nonché per una serie di altri motivi, sono apparse numerose interpretazioni diverse di questo concetto. Di conseguenza, molte persone considerano MVC uno schema o modello di progettazione. Meno comunemente, MVC è chiamato modello composito o una combinazione di diversi modelli che lavorano insieme per implementare applicazioni complesse. Ma in realtà, come detto prima, MVC è principalmente un insieme di idee/principi/approcci architettonici che possono essere implementati in vari modi utilizzando vari modelli... Successivamente, proveremo a esaminare le idee principali incorporate nel concetto MVC.Cos'è MVC: idee e principi di base
- VC è un insieme di idee e principi architettonici per la costruzione di sistemi informativi complessi con un'interfaccia utente;
- MVC è un acronimo che sta per Model-View-Controller.
Passaggio 1: separare la logica aziendale dell'applicazione dall'interfaccia utente
L'idea chiave di MVC è che qualsiasi applicazione dotata di interfaccia utente, in prima approssimazione, può essere divisa in 2 moduli: un modulo responsabile dell'implementazione della logica di business dell'applicazione e un'interfaccia utente. Il primo modulo implementerà le funzionalità principali dell'applicazione. Questo modulo costituirà il nucleo del sistema, in cui verrà implementato il modello del dominio applicativo. Nel concetto MVC, questo modulo sarà la nostra lettera M, cioè modello. Il secondo modulo implementerà l'intera interfaccia utente, inclusa la visualizzazione dei dati all'utente e la logica di interazione dell'utente con l'applicazione. Lo scopo principale di questa separazione è garantire che il nucleo del sistema (modello nella terminologia MVC) possa essere sviluppato e testato in modo indipendente. L'architettura dell'applicazione dopo tale divisione sarà simile alla seguente:Passaggio 2. Utilizzando il modello Observer, ottieni un'indipendenza ancora maggiore del modello, nonché la sincronizzazione delle interfacce utente
Qui perseguiamo 2 obiettivi:- Ottieni un'indipendenza ancora maggiore dal modello.
- Sincronizzare le interfacce utente.
Passaggio 3. Dividere l'interfaccia in View e Controller
Continuiamo a dividere l'applicazione in moduli, ma ad un livello inferiore della gerarchia. In questo passaggio l'interfaccia utente (che nel passaggio 1 era separata in un modulo separato) è divisa in una vista e un controller. È difficile tracciare una linea netta tra una vista e un controller. Se diciamo che la vista è ciò che vede l’utente, e il controllore è il meccanismo attraverso il quale l’utente può interagire con il sistema, c’è qualche contraddizione. I controlli, come i pulsanti su una pagina Web o una tastiera virtuale sullo schermo del telefono, fanno essenzialmente parte di un controller. Ma sono visibili all'utente quanto qualsiasi parte della vista. Qui stiamo parlando più di divisione funzionale. Il compito principale dell'interfaccia utente è garantire l'interazione dell'utente con il sistema. Ciò significa che l'interfaccia ha solo 2 funzioni:- visualizzare e visualizzare comodamente le informazioni sul sistema all'utente;
- inserire i dati e i comandi dell'utente nel sistema (trasmetterli al sistema);
- Seguendo i principi di MVC, il sistema deve essere suddiviso in moduli.
- Il modulo più importante e indipendente dovrebbe essere il modello.
- Il modello è il cuore del sistema. È necessaria la capacità di svilupparlo e testarlo indipendentemente dall'interfaccia.
- Per fare ciò, nella prima fase della segregazione del sistema, è necessario dividerlo in un modello e un'interfaccia.
- Successivamente, utilizzando il pattern Observer, rafforziamo il modello nella sua indipendenza e otteniamo la sincronizzazione delle interfacce utente.
- Il terzo passaggio consiste nel dividere l'interfaccia in un controller e una vista.
- Tutto ciò che è necessario per inserire le informazioni dell'utente nel sistema è nel controller.
- Tutto ciò che trasmette informazioni dal sistema all'utente è in vista.
GO TO FULL VERSION