Veebisait on midagi enamat kui see, mida ta väljastpoolt näeb. Tegelikult erineb veebisaidi struktuurimuster sama palju kui veebisait ise. Veebisait on keeruline paljude komponentide veeb, mis suhtlevad rakenduse käivitamiseks üksteisega. Võtke näiteks Facebook, mis on üks keerukamaid veebisaite, mida me peaaegu iga päev kasutame. Minge selle avalehele ja näete, et veebisait tegeleb korraga peaaegu tosina andmetaotlusega, et täita leht hulga komponentidega. Võib hõlpsalt ette kujutada, et loogika, mis põhineb komponentide üksteise suhtlemisel sellise programmi käivitamiseks nagu Facebook, võib teistest veebisaitidest olla väga erinev. Igasuguse veebisaidi põhifunktsioonid on määratletud sellega, kui hõlpsalt kasutajaliides interakteerub sobiva mudeliga, et saada andmeid, mida vaataja soovib. MVC ja MVVM on tarkvara arendamise maailmas kaks populaarset kujundusmustrit.
MVC, lühidalt Model-View-Controller, on rakenduse kujundamise mudel, mida tavaliselt kasutatakse kaasaegsete kasutajaliideste väljatöötamiseks. MVC muster on kaasaegse objektorienteeritud tarkvaraarenduse keskmes, kuna see tekkis objektorienteeritud disainikogukonnast. Algselt kandis see 1979. aastal nime Thing-Model-View-Editor, kuid hiljem muudeti seda lihtsamaks ja nimetati ümber Model-View-Controller. Seda kasutatakse peamiselt mobiili- ja veebirakenduste kujundamisel ja arendamisel. See jagab rakenduse kasutajaliidese kolmeks eraldi osaks: mudel, vaade ja kontroller.
Mudel: Mudel tähistab klassikomplekti, mis kirjeldab andmeid, mida kavatsete rakenduses kasutada. See kirjeldab andmete ühist vormingut, kuid võib sisaldada ka ärieeskirju, teisendusi, valideerimise loogikat ja mitmesuguseid muid funktsioone.
Vaade: Vaade tähistab mudelis kuvatavaid andmeid. See määratleb rakenduse kasutajaliidese kuvamise viisi. Sõltuvalt rakendusest võib mudelil olla mitu vaadet. Vaatemudel kujutab kujunduslikult sisuliselt kasutajaliidese komponente nagu HTML, jQuery jne.
Kontroller: Kontroller on MVC-rakenduse keskne osa, mis haldab kasutajalt suhtlust sündmuste, rakenduse üldise voo ja rakendusespetsiifilise loogika vormis. Seejärel teisendatakse sündmused teenusetaotlusteks ja edastatakse mudelile või vaatele. See on ainus komponent, mille kaudu kasutaja süsteemiga suhtleb.
Model-View-ViewModel ehk MVVM on populaarne tarkvaraarhitektuurimuster, mida tavaliselt kasutatakse korduvkasutatavate ja hõlpsasti kontrollitavate veebirakenduste väljatöötamiseks. MVVM põhineb MVC mustril, kuid täiustab seda MVC mudelis, kehtestades uue klassi ViewModel, mis haldab vaate spetsiifilisi andmeid. MVVM-mudeli põhieesmärk on mudeli ja vaate komponentide tõeline eraldamine. Mudeli põhikomponendid on: Model, View ja ViewModel.
Mudel: Põhimõte jääb samaks nagu MVC mudelis. Mudel esindab äriloogikat ja andmeid ning täpsustab, kuidas andmetega tuleks manipuleerida.
Vaade: Vaademudel esindab kuvatavaid andmeid, kuid ei teosta andmetega mingeid manipulatsioone. Vaade on sama, mis MVC-s, välja arvatud juhul, kui vaade peab olema seatud andmeseosetega, tuleb selleks lisada vaatele ViewModel.
Vaatemudel: See on mudeli kõige olulisem komponent, kuna selle eesmärk on kasutada andmete sidumisfunktsioone, mis tegelikult aitab vaadet mudelist eraldi hoida ja samal ajal toimib vastutajana suhtluse hõlbustamiseks komponentide Vaade ja Mudel vahel.
- Mudel-vaade-kontroller (MVC) on rakenduse kujundamise mudel, mida tavaliselt kasutatakse kaasaegsete kasutajaliideste väljatöötamiseks. See jagab rakenduse kasutajaliidese kolmeks eraldi osaks: mudel, vaade ja kontroller. Seevastu Model-View-ViewModel (MVVM) on MVC mudeli kaasaegne variant, mida tavaliselt kasutatakse korduvkasutatavate ja hõlpsasti kontrollitavate veebirakenduste väljatöötamiseks. MVVM-mudeli põhikomponendid on Model, View ja ViewModel.
- Peamine funktsioon, mis eristab MVVM-i teistest tarkvara kujundamise mustritest, on andmete sidumine, mis on lihtsalt mehhanism, mis ühendab kasutajaliidese äriloogikaga. See on peamine tehnoloogia, mis ühendab vaateid nende ViewModelitega, mis tagab, et mudelid ja omadused on sünkroonis ViewModeli vaatega. See välistab vajaduse paljastada kogu mudel vaatele.
- Peamine erinevus kahe arhitektuurilise mustri vahel on see, et MVC-s vastutab kontroller mudeli ja vaate vahelise kommunikatsiooni juhtimise eest sündmuste abil, samas kui raamistik teeb kõik MVVM-i rasked tõstefunktsioonid, kasutades funktsiooni, mida nimetatakse andmete sidumiseks. Vaatemudel MVVM-is aitab vaadet mudelist lahus hoida ja samal ajal toimib kontrollerina, et hõlbustada suhtlust vaate ja mudeli komponentide vahel.
Kui nii MVC kui ka MVVM on MVC mudeli tuletised, siis MVVM on MVC mudeli kaasaegne variant, mis tutvustab uut klassi ViewModel, mis haldab vaatele spetsiifilisi andmeid. MVVM-mudeli põhieesmärk on mudeli ja vaate komponentide tõeline eraldamine. MVC-s vastutab kontroller mudeli ja vaate vahelise suhtluse haldamise eest. Kuid MVVM-is aitab ViewModel vaadet mudelist eraldi hoida ja toimib ka kontrollerina, et hõlbustada kommunikatsiooni komponentide vahel.