Dit materiaal maakt deel uit van de serie "Inleiding tot Enterprise Development". Vorige artikelen:
- over netwerken
- over software-architectuur
- over HTTP/HTTPS
- over de basis van Maven
- over servlets (een eenvoudige webapplicatie schrijven)
- over servletcontainers
Geschiedenis van MVC
De ideeën achter MVC zijn geformuleerd door Trygve Reenskaug toen hij eind jaren zeventig bij Xerox PARC werkte. In die tijd vereiste het werken met computers een diploma en een constante studie van omvangrijke documentatie. De taak die Reenskaug samen met een groep zeer sterke ontwikkelaars oploste, was om de interactie van een gewone gebruiker met de computer te vereenvoudigen. Het was noodzakelijk om tools te maken die enerzijds uiterst eenvoudig en begrijpelijk zouden zijn, en anderzijds het mogelijk zouden maken om computers en complexe applicaties te besturen. Reenskaug werkte aan een team dat onder leiding van Alan Kay een laptop ontwikkelde "voor kinderen van alle leeftijden" - de Dynabook, evenals de SmallTalk-taal. Dat was toen de concepten van een vriendelijke interface werden vastgelegd. In veel opzichten, het werk van Reenskaug en zijn team heeft de evolutie van de IT-sfeer beïnvloed. Hier is een interessant feit dat niet direct van toepassing is op MVC, maar het belang van deze ontwikkelingen illustreert. Alan Kaygezegd, "Toen ik voor het eerst bij Apple kwam, dat was in '84, was de Mac al uit en Newsweek nam contact met me op en vroeg me wat ik van de Mac vond. Ik zei: 'Nou, de Mac is de eerste personal computer die goed genoeg is om bekritiseerd worden.' Dus nadat hij in 2007 de iPhone had aangekondigd, bracht hij hem naar me toe en overhandigde hem aan mij. Hij zei: 'Alan, is dit goed genoeg om bekritiseerd te worden?' En ik zei: 'Steve, maak het zo groot als een tablet en je zult de wereld regeren.'" Na 3 jaar, op 27 januari 2010, introduceerde Apple de iPad met een diagonaal van 9,7 inch. Met andere woorden, Steve Jobs volgde het advies van Alan Kay bijna precies op. Het project van Reenskaug duurde 10 jaar. Maar de eerste publicatie over MVC kwam na nog eens 10 jaar aan het licht. Martin Fowler, auteur van verschillende boeken en artikelen over software-architectuur, vermeldt dat hij MVC bestudeerde met behulp van een werkende versie van Smalltalk. Omdat er lange tijd geen informatie over MVC uit de oorspronkelijke bron was, en om verschillende andere redenen, verschenen er een groot aantal verschillende interpretaties van dit concept. Als gevolg hiervan beschouwen velen MVC als een ontwerppatroon. Minder vaak wordt MVC een samengesteld patroon genoemd of een combinatie van verschillende patronen die samenwerken om complexe toepassingen te creëren. Maar zoals eerder vermeld, is MVC eigenlijk in de eerste plaats een reeks architecturale ideeën/principes/benaderingen die op verschillende manieren kunnen worden geïmplementeerd met behulp van verschillende patronen... Vervolgens zullen we de belangrijkste ideeën bekijken die zijn ingebed in het MVC-concept. en om verschillende andere redenen verschenen er een groot aantal verschillende interpretaties van dit concept. Als gevolg hiervan beschouwen velen MVC als een ontwerppatroon. Minder vaak wordt MVC een samengesteld patroon genoemd of een combinatie van verschillende patronen die samenwerken om complexe toepassingen te creëren. Maar zoals eerder vermeld, is MVC eigenlijk in de eerste plaats een reeks architecturale ideeën/principes/benaderingen die op verschillende manieren kunnen worden geïmplementeerd met behulp van verschillende patronen... Vervolgens zullen we de belangrijkste ideeën bekijken die zijn ingebed in het MVC-concept. en om verschillende andere redenen verschenen er een groot aantal verschillende interpretaties van dit concept. Als gevolg hiervan beschouwen velen MVC als een ontwerppatroon. Minder vaak wordt MVC een samengesteld patroon genoemd of een combinatie van verschillende patronen die samenwerken om complexe toepassingen te creëren. Maar zoals eerder vermeld, is MVC eigenlijk in de eerste plaats een reeks architecturale ideeën/principes/benaderingen die op verschillende manieren kunnen worden geïmplementeerd met behulp van verschillende patronen... Vervolgens zullen we de belangrijkste ideeën bekijken die zijn ingebed in het MVC-concept.MVC: basisideeën en principes
- VC is een reeks architecturale ideeën en principes voor het bouwen van complexe informatiesystemen met een gebruikersinterface
- MVC is een afkorting die staat voor: Model-View-Controller
Stap 1. Scheid de bedrijfslogica van de applicatie van de gebruikersinterface
Het hoofdidee van MVC is dat elke applicatie met een gebruikersinterface kan worden onderverdeeld in 2 modules: een module die verantwoordelijk is voor het implementeren van de bedrijfslogica en de gebruikersinterface. De eerste module implementeert de belangrijkste functionaliteit van de applicatie. Deze module vormt de kern van het systeem, waarin het domeinmodel van de applicatie wordt geïmplementeerd. In het MVC-paradigma is deze module de letter M, ofwel het model. De tweede module implementeert de volledige gebruikersinterface, inclusief de logica om gegevens aan de gebruiker weer te geven en de gebruikersinteractie met de applicatie af te handelen. Het belangrijkste doel van deze scheiding is ervoor te zorgen dat de kern van het systeem (het "model" in MVC-terminologie) onafhankelijk kan worden ontwikkeld en getest. Na het maken van deze scheiding ziet de architectuur van de applicatie er als volgt uit:Stap 2 Gebruik het waarnemerspatroon om het model nog onafhankelijker te maken en gebruikersinterfaces te synchroniseren
Hier hebben we 2 doelen:- Bereik nog meer onafhankelijkheid voor het model
- Synchroniseer gebruikersinterfaces
Stap 3 Scheid de interface in weergave en controller
We gaan door met het opdelen van de applicatie in modules, maar nu op een lager niveau in de hiërarchie. Bij deze stap wordt de gebruikersinterface (die we in stap 1 hebben gescheiden in een aparte module) opgesplitst in een weergave en een controller. Een strikte grens trekken tussen het uitzicht en de controller is moeilijk. Als we zeggen dat de weergave is wat de gebruiker ziet, en de controller het mechanisme is waarmee de gebruiker met het systeem kan communiceren, zou je op een tegenstrijdigheid kunnen wijzen. Bedieningselementen, zoals knoppen op een webpagina of een virtueel toetsenbord op het scherm van een telefoon, maken in feite deel uit van de controller. Maar ze zijn net zo zichtbaar voor de gebruiker als elk ander deel van de weergave. Waar we het hier echt over hebben, is functionele scheiding. De belangrijkste taak van de gebruikersinterface is om de interactie van de gebruiker met het systeem te vergemakkelijken.- uitvoer en geeft systeeminformatie gemakkelijk weer aan de gebruiker
- gebruikersgegevens en commando's invoeren (communiceren naar het systeem)
- Volgens de principes van het MVC-paradigma moet een systeem worden opgedeeld in modules.
- De belangrijkste en onafhankelijke module zou het model moeten zijn.
- Het model is de kern van het systeem. Het moet mogelijk zijn om het onafhankelijk van de gebruikersinterface te ontwikkelen en te testen.
- Om dit te bereiken, moeten we in de eerste stap van de divisie het systeem opsplitsen in een model en gebruikersinterface.
- Vervolgens versterken we met behulp van het waarnemerspatroon de onafhankelijkheid van het model en synchroniseren we gebruikersinterfaces.
- De derde stap is het verdelen van de gebruikersinterface in een controller en weergave.
- Alles wat nodig is om gebruikersgegevens in het systeem te ontvangen, bevindt zich in de controller.
- Alles wat nodig is om informatie aan de gebruiker te leveren, staat in de weergave.