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.

  • ๐Ÿงฑ Kolme komponenttia: MVC jakaa sovelluksen malliin (data), nรคkymรครคn (esitys) ja ohjaimeen (kรคyttรคjรคn vuorovaikutus).
  • ๐Ÿ—„๏ธ Malli: Tallentaa tietoja ja liiketoimintalogiikkaa vastaamalla nรคkymรคn pyyntรถihin ja ohjaimen ohjeisiin.
  • ๐Ÿ–ผ๏ธ Katso: Esittรครค tiedot kรคyttรคjรคlle kรคyttรถliittymรคelementtien, kuten tekstilaatikoiden, avattavien valikoiden, kaavioiden ja taulukoiden, kautta.
  • ๐ŸŽฎ ohjain: Tulkitsee kรคyttรคjรคn syรถtteen ja pรคivittรครค sitten mallin ja nรคkymรคn vastaavasti.
  • โš™๏ธ Suositut kehykset: Spring MVC, Django, Ruby on Rails, CakePHP, Laravel ja CodeSytytin toteuttaa MVC-kuvion.
  • ๐Ÿ‡ง๐Ÿ‡ท Edut vs. haitat: MVC parantaa testattavuutta ja rinnakkaiskehitystรค, mutta lisรครค vatsalihaksiatraction kerrokset ja navigoinnin monimutkaisuus.

MVC Archirakenne ja viitekehys

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:

MVC Archirakenne
MVC Architecture Kaavio

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

MVC-esimerkkejรค

  • 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

MVC-esimerkkejรค

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รค:

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.

UKK

MVC on arkkitehtoninen malli, ei yksinkertainen suunnittelumalli. Se jรคrjestรครค koko sovelluksen malli-, nรคkymรค- ja ohjainkerroksiin erottamalla datan, esityksen ja kรคyttรคjรคvuorovaikutuksen logiikan.

MVC kรคyttรครค ohjainta syรถtteen kรคsittelyyn ja mallin ja nรคkymรคn pรคivittรคmiseen, kun taas MVVM kรคyttรครค nรคkymรคmallia datasidonnalla. MVVM yksinkertaistaa mallipohjaista suunnittelua ja on yleinen nykyaikaisissa kรคyttรถliittymรคkehyksissรค.

Kรคytรค MVC:tรค, kun rakennat sovelluksia, jotka vaativat selkeรครค datan, kรคyttรถliittymรคn ja logiikan erottelua, erityisesti suurempien tiimien yllรคpitรคmissรค verkkosovelluksissa. Se parantaa testattavuutta, rinnakkaiskehitystรค ja hakukoneoptimointiystรคvรคllistรค reititystรค.

Tekoรคlyominaisuudet lisรคtรครคn yleensรค MVC-sovelluksen malli- tai palvelukerrokseen. Ohjain vรคlittรครค kรคyttรคjรคn syรถtteen tekoรคlymalleille, ja nรคkymรค nรคyttรครค kรคyttรคjille ennusteita, suosituksia tai luotua sisรคltรถรค.

Kyllรค. Tekoรคlykoodausavustajat voivat scaffolding-menetelmรคllรค luoda MVC-komponentteja, luoda ohjaimia, malleja ja nรคkymiรค sekรค ehdottaa reititystรค. Kehittรคjรคt tarkistavat edelleen tulosteen varmistaakseen oikean liiketoimintalogiikan ja tietoturvan.

Tiivistรค tรคmรค viesti seuraavasti: