Dette materiale er en del af serien "Introduktion til virksomhedsudvikling". Tidligere artikler:
- om netværk
- om softwarearkitektur
- om HTTP/HTTPS
- om det grundlæggende i Maven
- om servlets (skrivning af en simpel webapplikation)
- om servletbeholdere
Historien om MVC
Idéerne bag MVC blev formuleret af Trygve Reenskaug, mens han arbejdede hos Xerox PARC i slutningen af 1970'erne. I de dage krævede arbejdet med computere en grad og konstant undersøgelse af omfangsrig dokumentation. Opgaven, som Reenskaug løste sammen med en gruppe meget stærke udviklere, var at forenkle en almindelig brugers interaktion med computeren. Det var nødvendigt at skabe værktøjer, der på den ene side ville være ekstremt enkle og forståelige, og på den anden side ville gøre det muligt at styre computere og komplekse applikationer. Reenskaug arbejdede på et team, der udviklede en bærbar computer "til børn i alle aldre" - Dynabook, såvel som SmallTalk-sproget under ledelse af Alan Kay. Det var dengang, koncepterne for en venlig grænseflade blev fastlagt. I mange henseender, arbejdet udført af Reenskaug og hans team påvirkede udviklingen af IT-sfæren. Her er et interessant faktum, som ikke gælder for MVC direkte, men som illustrerer betydningen af disse udviklinger. Alan Kaysagde, "Da jeg først kom til Apple, som var i '84, var Mac'en allerede ude, og Newsweek kontaktede mig og spurgte mig, hvad jeg syntes om Mac'en. Jeg sagde: 'Jamen, Mac'en er den første personlige computer, der er god nok til at blive kritiseret.' Så efter at have annonceret iPhonen i 2007, bragte han den til mig og gav mig den. Han sagde: "Alan, er det her godt nok til at blive kritiseret?" Og jeg sagde, 'Steve, gør den i denne størrelse så stor som en tablet, og du vil herske over verden.'" Efter 3 år, den 27. januar 2010, introducerede Apple iPad'en med en diagonal på 9,7 tommer. Steve Jobs fulgte med andre ord Alan Kays råd næsten nøjagtigt. Reenskaugs projekt varede i 10 år. Men den første udgivelse om MVC kom frem efter yderligere 10 år. Martin Fowler, forfatter til adskillige bøger og artikler om softwarearkitektur, nævner, at han studerede MVC ved hjælp af en fungerende version af Smalltalk. Fordi der ikke var nogen information om MVC fra den originale kilde i lang tid, og af flere andre årsager, dukkede et stort antal forskellige fortolkninger af dette koncept op. Som et resultat betragter mange MVC som et designmønster. Mindre almindeligt kaldes MVC et sammensat mønster eller en kombination af flere mønstre, der arbejder sammen for at skabe komplekse applikationer. Men, som tidligere nævnt, er MVC faktisk primært et sæt af arkitektoniske ideer/principper/tilgange, der kan implementeres på forskellige måder ved hjælp af forskellige mønstre... Dernæst vil vi overveje de vigtigste ideer, der er indlejret i MVC-konceptet. og af flere andre grunde dukkede et stort antal forskellige fortolkninger af dette koncept op. Som et resultat betragter mange MVC som et designmønster. Mindre almindeligt kaldes MVC et sammensat mønster eller en kombination af flere mønstre, der arbejder sammen for at skabe komplekse applikationer. Men, som tidligere nævnt, er MVC faktisk primært et sæt af arkitektoniske ideer/principper/tilgange, der kan implementeres på forskellige måder ved hjælp af forskellige mønstre... Dernæst vil vi overveje de vigtigste ideer, der er indlejret i MVC-konceptet. og af flere andre grunde dukkede et stort antal forskellige fortolkninger af dette koncept op. Som et resultat betragter mange MVC som et designmønster. Mindre almindeligt kaldes MVC et sammensat mønster eller en kombination af flere mønstre, der arbejder sammen for at skabe komplekse applikationer. Men, som tidligere nævnt, er MVC faktisk primært et sæt af arkitektoniske ideer/principper/tilgange, der kan implementeres på forskellige måder ved hjælp af forskellige mønstre... Dernæst vil vi overveje de vigtigste ideer, der er indlejret i MVC-konceptet.MVC: Grundlæggende ideer og principper
- VC er et sæt arkitektoniske ideer og principper til at bygge komplekse informationssystemer med en brugergrænseflade
- MVC er en forkortelse, der står for: Model-View-Controller
Trin 1. Adskil applikationens forretningslogik fra brugergrænsefladen
Hovedideen med MVC er, at enhver applikation med en brugergrænseflade kan opdeles i 2 moduler: et modul, der er ansvarlig for implementering af forretningslogikken, og brugergrænsefladen. Det første modul vil implementere applikationens hovedfunktionalitet. Dette modul er kernen i systemet, hvor applikationens domænemodel er implementeret. I MVC-paradigmet er dette modul bogstavet M, altså modellen. Det andet modul implementerer hele brugergrænsefladen, inklusive logikken til at vise data til brugeren og håndtere brugerinteraktion med applikationen. Hovedmålet med denne adskillelse er at sikre, at kernen i systemet ("modellen" i MVC-terminologi) kan udvikles og testes selvstændigt. Efter at have foretaget denne adskillelse ser applikationens arkitektur således ud:Trin 2 Brug observatørmønsteret til at gøre modellen endnu mere uafhængig og til at synkronisere brugergrænseflader
Her har vi 2 mål:- Opnå endnu større uafhængighed for modellen
- Synkroniser brugergrænseflader
Trin 3 Adskil grænsefladen i visning og controller
Vi fortsætter med at opdele applikationen i moduler, men nu på et lavere niveau i hierarkiet. På dette trin er brugergrænsefladen (som vi adskilte i et særskilt modul i trin 1) opdelt i en visning og en controller. Det er svært at trække en streng linje mellem visningen og controlleren. Hvis vi siger, at visningen er, hvad brugeren ser, og controlleren er den mekanisme, der tillader brugeren at interagere med systemet, kan du påpege en selvmodsigelse. Kontrolelementer, såsom knapper på en webside eller et virtuelt tastatur på en telefons skærm, er grundlæggende en del af controlleren. Men de er lige så synlige for brugeren som enhver del af visningen. Det, vi egentlig taler om her, er funktionel adskillelse. Brugergrænsefladens hovedopgave er at lette brugerens interaktion med systemet.- output og bekvemt vise systeminformation til brugeren
- indtast brugerdata og kommandoer (kommuniker dem til systemet)
- Ifølge principperne i MVC-paradigmet skal et system opdeles i moduler.
- Det vigtigste og mest uafhængige modul bør være modellen.
- Modellen er kernen i systemet. Det skal være muligt at udvikle og teste det uafhængigt af brugergrænsefladen.
- For at opnå dette skal vi i det første trin af opdelingen opdele systemet i en model og brugergrænseflade.
- Derefter, ved hjælp af observatørmønsteret, styrker vi modellens uafhængighed og synkroniserer brugergrænseflader.
- Det tredje trin er at opdele brugergrænsefladen i en controller og visning.
- Alt hvad der kræves for at modtage brugerdata ind i systemet er i controlleren.
- Alt hvad der kræves for at levere information til brugeren er i visningen.
GO TO FULL VERSION