Model-View-Controller (MVC)
Men gebruikt de term MVC binnen de software engineering om aan te duiden hoe een softwareprogramma of webapplicatie is opgebouwd. Bij MVC is er een duidelijke scheiding tussen drie zaken:
- Model: informatie over gegevens, zoals de structuur van databasetabellen
- View: presentatie, hoe worden dingen op het scherm getoond of uitgeprint?
- Controller: logica, uitvoeren van berekeningen of het beheren van gebruikersrechten
Het model, de view en de controller krijgen elk een eigen bestand, waarbij de programmeercode in dat bestand zich uitsluitend op die desbehorende taak richt. Bij een perfect gebruik van Model-View-Controller zal bijvoorbeeld een view zich nooit bezighouden met het wegschrijven van gegevens in de database. Over het algemeen is dit alleen voorbehouden aan de controller, die vervolgens weer het model gebruikt om de structuur van de desbetreffende gegevens te achterhalen.
Stelt u zich een scherm voor waarop u persoonsgegevens van een klant kunt invullen. Het model beschrijft de gegevens, de velden, die worden gebruikt in het scherm. Bijvoorbeeld de naam, het geslacht, adresgegevens en het telefoonnummer. De view beschrijft hoe en in welke volgorde de gegevens op het scherm getoond worden. De controller is in feite de lijm tussen het model en de view. De controller zorgt ervoor dat men daadwerkelijk acties kan uitvoeren met de gegevens, zoals:
- Klantenlijst tonen
- Klantdetails tonen
- Bestaande klant zoeken in het systeem
- Nieuwe klant aanmaken in het systeem
- Bestaande klant wijzigen in het systeem
- Klant verwijderen uit het systeem
Belangrijk om op de merken is dat het model, de view en de controller in dit geval alleen verantwoordelijk zijn voor acties die worden uitgevoerd op klantgegevens. Een product is bijvoorbeeld weer een ander soort informatie en zodoende zullen producten in het computersysteem weer een eigen set van model, view en controller krijgen.
Waarom gebruikt men MVC?
Een complexe webapplicatie kan op een gegeven moment bestaan uit wel tienduizenden regels programmeercode. Deze code moet op allerlei manieren onderhouden worden: programmeerfouten (bugs) moeten worden opgelost en af en toe moet de webapplicatie worden uitgebreid. Wanneer men de programmeercode niet logisch scheidt, dan zal het voor de programmeurs heel lastig zoeken zijn om uit te zoeken waar zij de programmeercode moeten aanpassen. Het is te vergelijken met een dik kookboek zonder inhoudsopgave doorzoeken naar een bepaald recept. MVC is in feite de "inhoudsopgave". Wanneer een klant bijvoorbeeld een softwarebug aanmeldt omtrent het weergeven van de productenlijst, dan weet de programmeur dat hij de fout moet repareren in de view van producten.