MVC Archirakenne ja viitekehys esimerkkeineen
โก รlykรคs yhteenveto
Model-View-Controller (MVC) on arkkitehtoninen malli, joka jakaa sovelluksen kolmeen komponenttiin โ Model, View ja Controller โ eristรคen liiketoimintalogiikan esityskerroksesta, jotta voidaan rakentaa yllรคpidettรคviรค ja testattavia verkko- ja tyรถpรถytรคsovelluksia kรคyttรคmรคllรค esimerkiksi Springiรค, Djangoa ja Laravelia.

Mikรค on MVC Framework?
Model-View-Controller (MVC) Framework on arkkitehtoninen malli, joka jakaa sovelluksen kolmeen loogiseen pรครคkomponenttiin Model, View ja Controller. Tรคstรค johtuu lyhenne MVC. Jokainen arkkitehtuurikomponentti on rakennettu kรคsittelemรครคn sovelluksen tiettyรค kehitysnรคkรถkohtaa. MVC erottaa liiketoimintalogiikan ja esityskerroksen toisistaan. Sitรค kรคytettiin perinteisesti tyรถpรถydรคn graafisissa kรคyttรถliittymissรค (GUI). Nykyรครคn verkkoteknologian MVC-arkkitehtuurista on tullut suosittu sekรค verkkosovellusten ettรค mobiilisovellusten suunnittelussa.
MVC:n historia
- Trygve Reenskaug kรคsitteli MVC-arkkitehtuuria ensimmรคisen kerran vuonna 1979
- MVC-malli esiteltiin ensimmรคisen kerran vuonna 1987 Smalltalk-ohjelmointikielellรค.
- MVC hyvรคksyttiin ensimmรคistรค kertaa yleisenรค kรคsitteenรค vuoden 1988 artikkelissa
- Viime aikoina MVC-kuviota on kรคytetty laajalti nykyaikaisissa web-sovelluksissa.
MVC:n ominaisuudet
- Helppo ja kitkaton testattavuus. Erittรคin testattava, laajennettava ja liitettรคvรค kehys
- Verkkosovellusarkkitehtuurin suunnittelu MVC-mallin avulla tarjoaa tรคyden hallinnan HTML:รครคn ja... URLs
- Hyรถdynnรค ASP.NETin, JSP:n, Djangon jne. tarjoamia ominaisuuksia.
- Selkeรค logiikan erottelu: malli, nรคkymรค, ohjain. Sovellustehtรคvien erottelu mm. liiketoimintalogiikka, Ul-logiikka ja syรถttรถlogiikka
- URL Reititys hakukoneoptimointia varten URLs. Voimakas URL-karttaping ymmรคrrettรคvรคksi ja haettavaksi URLs
- Tuki testilรคhtรถiselle kehitykselle (TDD)
MVC Archirakenne
Nyt kun hyรถdyt ovat selvรคt, tรคssรค on MVC-kehyksen yksityiskohtainen arkkitehtuuri:

Kolme tรคrkeรครค MVC-komponenttia ovat:
- Malli: Se sisรคltรครค kaikki tiedot ja siihen liittyvรคn logiikan
- Nรคytรค: Nรคytรค tiedot kรคyttรคjรคlle tai kรคsittelee kรคyttรคjรคn vuorovaikutusta
- Ohjain: Model- ja View-komponenttien vรคlinen liitรคntรค
Katsotaanpa kutakin nรคistรค komponenteista yksityiskohtaisesti:
Nรคytรค
Nรคkymรค on se osa sovelluksesta, joka edustaa tietojen esitystapaa.
Nรคkymรคt luodaan mallidatasta kerรคtyn datan perusteella. Nรคkymรค pyytรครค mallia antamaan tietoja, jotta se voi esittรครค tulosteen kรคyttรคjรคlle.
Nรคkymรค edustaa myรถs kaavioiden, kaavioiden ja taulukoiden tietoja. Esimerkiksi mikรค tahansa asiakasnรคkymรค sisรคltรครค kaikki kรคyttรถliittymรคkomponentit, kuten tekstilaatikot, pudotusvalikot jne.
ohjain
Ohjain on sovelluksen osa, joka kรคsittelee kรคyttรคjรคn vuorovaikutusta. Ohjain tulkitsee kรคyttรคjรคn hiiren ja nรคppรคimistรถn syรถtteet ja ohjaa mallia ja nรคkymรครค muuttumaan tarvittaessa.
Ohjain lรคhettรครค mallille komentoja sen tilan pรคivittรคmiseksi (esim. tietyn dokumentin tallentaminen). Ohjain lรคhettรครค myรถs komentoja siihen liittyvรครคn nรคkymรครคn nรคkymรคn esitystavan muuttamiseksi (esimerkiksi tietyn dokumentin vierittรคminen).
Malli
Mallikomponentti tallentaa tiedot ja siihen liittyvรคn logiikan. Se edustaa dataa, jota siirretรครคn ohjaimen komponenttien tai muun asiaan liittyvรคn liiketoimintalogiikan vรคlillรค. Esimerkiksi Controller-objekti hakee asiakastiedot tietokannasta. Se kรคsittelee tietoja ja lรคhettรครค takaisin tietokantaan tai kรคyttรครค sitรค samat tiedot.
Se vastaa nรคkymien pyyntรถihin ja myรถs ohjaimen ohjeisiin pรคivittรครค itsensรค. Se on myรถs kuvion alin taso, joka vastaa datan yllรคpidosta.
MVC-esimerkkejรค
Katsotaanpa mallinรคkymรคohjaimen esimerkkiรค jokapรคivรคisestรค elรคmรคstรค:
Esimerkki 1
- Oletetaan, ettรค menet ravintolaan. Et mene keittiรถรถn valmistamaan ruokaa, jonka voit varmasti tehdรค kotonasi. Sen sijaan menet sinne ja odotat, ettรค tarjoilija tulee.
- Nyt tarjoilija tulee luoksesi ja tilaat ruoan. Tarjoilija ei tiedรค kuka olet ja mitรค haluat, hรคn vain kirjoitti muistiin ruokatilauksesi yksityiskohdat.
- Sitten tarjoilija siirtyy keittiรถรถn. Keittiรถssรค tarjoilija ei valmista ruokaasi.
- Kokki valmistaa ruokasi. Tarjoilijalle annetaan tilauksesi ja pรถytรคnumerosi.
- Valmista sitten ruokaa sinulle. Hรคn kรคyttรครค ainesosia ruoan valmistukseen. Oletetaan, ettรค tilaat kasvisvoileivรคn. Sitten hรคn tarvitsee leipรครค, tomaattia, perunaa, paprikaa, sipulia, palaa, juustoa jne. joita hรคn hankkii jรครคkaapista
- Kypsennรค lopuksi luovuta ruoka tarjoilijalle. Nyt tarjoilijan tehtรคvรคnรค on siirtรครค tรคmรค ruoka keittiรถn ulkopuolelle.
- Nyt tarjoilija tietรครค, mitรค ruokaa olet tilannut ja miten ne tarjoillaan.
Tรคssรค MVC-arkkitehtuuriesimerkissรค
View= You Waiter= Controller Cook= Model Refrigerator= Data
Katsotaanpa vielรค yksi MVC-malliesimerkki,
Esimerkki 2
Auton ajomekanismi on toinen esimerkki MVC-mallista.
- Jokainen auto koostuu kolmesta pรครคosasta.
- Nรคkymรค: Kรคyttรถliittymรค: (Vaihdevipu, paneelit, ohjauspyรถrรค, jarru jne.)
- Ohjain - mekanismi (moottori)
- Malli - Varastointi (bensiini- tai dieselsรคiliรถ)
Auto kรคy moottorista ottaa polttoainetta varastosta, mutta toimii vain mainituilla kรคyttรถliittymรคlaitteilla.
Suositut MVC-verkkokehykset
Tรคssรค on luettelo suosituista MVC-kehyksistรค:
- Ruby on Rails
- Django
- cakePHP
- Yii
- Cherrypy
- Kevรครคn MVC
- Katalysaattori
- Raiteet
- Zend-kehys
- Codesytytin
- Laravel
- Polttoaine PHP
- Symphony
MVC:n edut: Tรคrkeimmรคt edut
Tรคssรค on MVC-arkkitehtuurin kรคytรถn tรคrkeimmรคt edut:
- Helppo koodihuolto, jota on helppo laajentaa ja kasvattaa
- MVC Model -komponentti voidaan testata erikseen kรคyttรคjรคstรค
- Helpompi tuki uudentyyppisille asiakkaille
- Eri komponenttien kehitys voidaan suorittaa rinnakkain.
- Se auttaa vรคlttรคmรครคn monimutkaisuutta jakamalla sovelluksen kolmeen yksikkรถรถn. Malli, nรคkymรค ja ohjain
- Se kรคyttรครค vain Front Controller -mallia, joka kรคsittelee verkkosovelluspyynnรถt yhden ohjaimen kautta.
- Tarjoaa parhaan tuen testiohjattu kehitys
- Se toimii hyvin verkkosovelluksissa, joita tukevat suuret web-suunnittelijat ja -kehittรคjรคt.
- Tarjoaa selkeรคn vastuualueiden erottelun (SoC).
- Hakukoneoptimointi (SEO) -ystรคvรคllinen.
- Kaikki luokat ja objektit ovat toisistaan โโriippumattomia, joten voit testata niitรค erikseen.
- MVC-suunnittelumalli mahdollistaa loogisen luokittelunping toisiinsa liittyviรค toimintoja ohjaimella yhdessรค.
MVC:n kรคytรถn haitat
- Tรคtรค mallia on vaikea lukea, muuttaa, yksikkรถtestata ja kรคyttรครค uudelleen
- Kehyksen navigointi voi joskus olla monimutkaista, koska se esittelee uusia vatsalihaskerroksiatracjoka vaatii kรคyttรคjiltรค sopeutumista MVC:n hajotelmakriteereihin.
- Ei virallista validointitukea
- Tietojen lisรครคntynyt monimutkaisuus ja tehottomuus
- MVC:n kรคytรถn vaikeus nykyaikaisen kรคyttรถliittymรคn kanssa
- Rinnakkaisohjelmoinnin suorittamiseen tarvitaan useita ohjelmoijia.
- Tarvitaan useiden teknologioiden tuntemus.
- Useiden koodien yllรคpito ohjaimessa
3-tason Architecture vs. MVC Archirakenne
| Parametri | 3-Tier Archirakenne | MVC Archirakenne |
|---|---|---|
| Viestintรค | Tรคmรคn tyyppinen arkkitehtuurimalli ei koskaan kommunikoi suoraan tietokerroksen kanssa. | Kaikki tasot kommunikoivat suoraan kรคyttรคmรคllรค kolmiotopologiaa. |
| Kรคyttรถ | 3-taso: kรคytetรครคn laajalti verkkosovelluksissa, joissa asiakas, tietotasot ja vรคliohjelmisto toimivat fyysisesti erillisillรค alustoilla. | Kรคytetรครคn yleensรค sovelluksissa, jotka toimivat yhdessรค graafisessa tyรถasemassa. |


