Model View Controller (MVC)
MVC is een term die door programmeurs met grote regelmaat wordt gebruikt. Het duidt op een indeling in lagen die men tegenwoordig steeds vaker gebruikt bij het programmeren van uiteenlopende computerprogramma's. MVC staat voor Model View Controller. Bij deze techniek van programmeren worden verschillende verantwoordelijkheden toegeschreven aan verschillende onderdelen van een webapplicatie. Denk daarbij vooral aan de scheiding tussen logica, presentatie en databasetransacties.
Volgens MVC zijn software applicaties opgesplitst in verschillende modules. Iedere module bestaat uit drie elementen: een model, een view en een controller.
Een model
Een model beschrijft hoe data gerepresenteerd wordt op database niveau. Welke entiteiten zijn verbonden aan welke databasetabellen en hoe zit het met de onderliggende samenhang?
Een view
Hoe wordt data gepresenteerd op het scherm of op de website? Hoe worden verwerkte gegevens mooi en overzichtelijk weergegeven als output van de controller? Denk hierbij ook aan conversielagen die over valuta gaan. Een locale gebruiker wil zijn totale uitgaven in een webshop zien in dollars in plaats van de euro. De view gaat over dit soort conversies.
Een controller
De controller is de lijm die ervoor zorgt dat MVC samenkomen. De controller bestaat uit zogenaamde actions, die gelden als handlers (uitvoerders) van de aanvraag van de website bezoeker. Aan de hand van de action worden het juiste model en de juiste view opgespoord en gebruikt.
Wanneer iemand naar de webapplicatie gaat, bepaalt het MVC-systeem aan de hand van de request URI van de bezoeker welke module en actie moeten worden aangeroepen. Acties worden beschreven in de controller die vervolgens het juiste model en de juiste view inlaadt. De controller geldt als lijm tussen het model (metadata over gegevens) en de view (presentatielaag).
Welke module er moet worden geraadpleegd wanneer er een bezoeker op de website komt, wordt bepaald door de zogenaamde router. In het geval van een webapplicatie voor een bedrijf moet je hierbij denken aan een kruispunt waarbij je naar links kan, naar een facturatie overzicht, rechtdoor naar het opvragen en bewerken van klantgegevens, of rechtsaf naar het uitprinten van de jaarinkomsten. Deze scheiding vindt plaats op moduleniveau.
Wanneer de juiste module is bepaald, dan wordt bekeken welke action van deze module de gebruiker opvraagt. Beide worden samengevoegd in een object en doorgegeven aan de zogenaamde dispatcher. Deze dispatcher laadt de bijbehorende module in en roept de opgevraagde action aan.
Voordelen van Model View Controller (MVC)
De scheiding die ontstaat tussen programmalogica (controller), databasetransacties (model) en presentatielaag (view) geeft de programmeurs van een complexe webapplicatie een soort rode draad bij het onderhoud van het systeem en het oplossen van softwarefouten (bugs). Ingewikkelde webapplicaties kunnen uit wel duizenden regels programmeercode bestaan.
Wanneer de programmeertechniek MVC wordt gebruikt, en programmeurs zijn bekend met het werken volgens Model View Controller, dan geeft dit een grote tijdswinst bij het oplossen van bugs en het toevoegen van functionaliteiten in de webapplicatie.