Model-View-Controller



Tiedot, jotka olemme pystyneet kokoamaan Model-View-Controllersta, on tarkistettu ja jäsennelty huolellisesti, jotta niistä olisi mahdollisimman paljon hyötyä. Tulit luultavasti tänne saadaksesi lisätietoja hotellista Model-View-Controller. Internetissä on helppo eksyä sellaisten sivustojen sekamelskaan, jotka puhuvat Model-View-Controllersta, mutta eivät kuitenkaan kerro sitä, mitä haluat tietää Model-View-Controllersta. Toivomme, että kerrot meille kommenteissa, jos pidät siitä, mitä olet lukenut Model-View-Controller alla. Jos tarjoamamme tiedot Model-View-Controller eivät ole sitä, mitä etsit, ole hyvä ja kerro meille, jotta voimme parantaa tätä verkkosivustoa päivittäin.

.

MVC-arkkitehtuuri tai MVC on ohjelmistoarkkitehtuurin motiivi varten graafisten käyttöliittymien käynnistettiin vuonna 1978 ja hyvin suosittu web-sovelluksia . Kuvio koostuu kolmesta moduulityypistä, joilla on kolme erilaista vastuuta: mallit, näkymät ja ohjaimet.

  • Malli sisältää näytettävät tiedot.
  • Näkymä sisältää graafisen käyttöliittymän esityksen.
  • Ohjain sisältää logiikan toimia käyttäjä suorittaa.

Tämä malli on käytössä monissa kehyksiä varten web-sovelluksia , kuten Ruby on Rails , Grails , ASP.NET MVC , Spring , Struts , Symfony , Apache Tapestry , Laravel , tai angularjs .

Historia

MVC malli luotiin Trygve Reenskaug aikana vierailun Palo Alton tutkimuskeskuksessa (ABR. PARC) vuonna 1978. Alkuperäinen nimi on asia malli näkymä editori kuvio , niin se oli nopeasti nimeksi MVC-arkkitehtuuri kuvio . MVC-mallia käytettiin ensimmäisen kerran graafisten rajapintojen luomiseen Smalltalk- ohjelmointikielen kanssa vuonna 1980.

Kuvaus

MVC-yhteensopivassa sovelluksessa on kolmen tyyppisiä moduuleja: mallit, näkymät ja ohjaimet.

Malli
Elementti, joka sisältää tiedot sekä tietoihin liittyvän logiikan: validointi, lukeminen ja tallentaminen. Se voi yksinkertaisimmassa muodossaan sisältää vain yhden arvon tai monimutkaisemman tietorakenteen. Malli edustaa maailmankaikkeutta, johon sovellus on osa. Esimerkiksi pankkisovelluksessa malli edustaa tilejä, asiakkaita ja tapahtumia, kuten talletuksia ja nostoja, ja varmistaa, että nostot eivät ylitä luottorajaa.
Näytä
Graafisen käyttöliittymän näkyvä osa . Näkymä käyttää mallia, ja se voi olla kaavio, lomake, painikkeet jne. Näkymä sisältää visuaalisia elementtejä sekä logiikan, joka tarvitaan mallin tietojen näyttämiseen. Tyypillisessä työpöytäsovelluksessa näkymä saa mallin esittämiseen tarvittavat tiedot kysymällä. Hän voi myös päivittää mallin lähettämällä sopivia viestejä. Verkkosovelluksessa näkymä sisältää HTML- tunnisteita .
Ohjain
Moduuli, joka käsittelee käyttäjän toimia, muokkaa mallia ja tarkastelee tietoja.

Riippuvuudet

Malli on riippumaton muista moduuleista. Se ei käytä näkymää tai ohjainta, mutta se voi lähettää viestejä heille. Näkymän ja mallin välillä on kaksi linkkiä: ensinnäkin näkymä lukee tietoja mallista ja toiseksi vastaanottaa viestejä mallista. Koska näkymä liittyy malliin ja malli on riippumaton, samaa mallia voidaan käyttää useissa näkymissä.

Käyttöliittymän tulo- / lähtöhallinnan näkökohdat ovat teknisesti hyvin erilaisia ​​ja niillä on heikot keskinäiset riippuvuudet. Tulojen hallinta delegoidaan ohjaimelle, kun taas tuotosten hallinta on näkymän vastuulla.

Näkymä on mallikohtainen. Se kysyy sitä esityksen näyttämiseksi.

Ohjain riippuu näkymästä ja mallista: näkymässä on visuaalisia elementtejä, joita käyttäjä voi käyttää. Ohjain reagoi näkymään tehtyihin toimiin ja muokkaa mallin tietoja.

Kun kyseessä on näkymä malli , malli sisältää tiedot, että ohjain kulkee näkymän. Verkkotunnusmallin tapauksessa se sisältää kaikki aktiviteettiin liittyvät tiedot sekä tietojen muokkaus- ja validointitoimintojen logiikan.

MVP ja MVVM

Malli-view-juontaja (MVP) ja malli-view-view malli (MVVM) kuviot ovat samanlaisia kuin malli-view-ohjain kuvioita, joissa on joitakin eroja.

  • MVP-mallissa ohjain korvataan esityksellä. Näkymä luo esityksen ja liittyy siihen käyttöliittymän avulla. Käyttäjän toiminnot käynnistävät näkymässä tapahtumia, ja nämä tapahtumat levitetään esitykseen käyttöliittymän avulla.
  • MVVM-mallissa näkymän ja mallin välillä on kaksisuuntainen viestintä, käyttäjän toimet johtavat mallin tietojen muokkaamiseen.

Verkkosovelluksissa

MVC-malli luotiin käyttöliittymien toteuttamista varten. Jotkut yksityiskohdat ovat linjassa Smalltalk-kielen kanssa, mutta ääriviivoja voidaan käyttää missä tahansa ympäristössä. Tämän mallin aiheuttama toiminta → päivitys → näyttösykli sopii hyvin verkkosovelluksiin. Lisäksi pomo edellyttää erottamista aiheista, ja HTML-tunnisteet rajoittuvat siten näkymiin, mikä parantaa sovelluksen ylläpidettävyyttä. Se oli Ruby on Rails puitteet web-sovelluksia , jotka toivat uutta mielenkiintoa tähän pomo.

Tämä malli on käytössä monissa kehyksiä varten web-sovelluksia , kuten Ruby on Rails , Django , ASP.NET MVC , Spring , Strutsia tai Apache Tapestry .

MVC-mallin klassisessa toteutuksessa näkymä odottaa muutoksia malliin ja muuttaa sitten vastaavien visuaalisten elementtien esitystä. Tätä toteutusta sovelletaan työpöytäsovelluksiin, joissa on kehyksiä, kuten Swing . HTTP- protokolla ei salli tätä toteutusta verkkosovelluksille. Jälkimmäisen osalta käyttäjän toiminnan aikana näkymän sisältö lasketaan uudelleen ja lähetetään sitten asiakkaalle.

Käsittelyvirta

Yhteenvetona, kun asiakas lähettää pyynnön sovellukselle:

  • ohjain analysoi näkymästä lähetetyn pyynnön (esimerkiksi käsittelijän tai soittopyynnön kautta ).
  • ohjain pyytää asianmukaista mallia käsittelyn suorittamiseksi ja ilmoittaa näkemykselle pyynnön käsittelystä.
  • ilmoitettu näkymä pyytää mallia päivittämään itsensä (näyttää esimerkiksi mallin kautta suoritetun käsittelyn tuloksen).

Edut

Tämän mallin tarjoama etu on sen asettaman arkkitehtuurin selkeys. Tämä yksinkertaistaa kehittäjän tehtävää yrittää suorittaa ylläpitoa tai parantaa projektia. Hoitojen muuttaminen ei todellakaan muuta näkemystä. Esimerkiksi, voit vaihtaa peräisin SQL- tyyppinen tietokanta on XML yksinkertaisesti vaihtamalla vuorovaikutuksen käsittely tietokantaan, ja näkymät ovat ennallaan.

MVC näyttää rajoituksensa sovelluksissa, jotka käyttävät sovelluspalvelimista rakennettua verkkotekniikkaa . Sitten lisätään lisäkerroksia samoin kuin hallinnan inversiomekanismit ja riippuvuuksien injektointi .

Ero kolmitasoisessa arkkitehtuurissa (3-tasoinen)

Kolmitasoinen (3-tasoinen) arkkitehtuuri on kerrostettu malli, toisin sanoen jokainen kerros kommunikoi vain vierekkäisten kerrostensa kanssa (ylhäältä ja alhaalta) ja ohjausvirta kulkee järjestelmän läpi ylhäältä alas. Ylemmät kerrokset ohjaavat alempia kerroksia, ts. Ylemmät kerrokset ovat aina vuorovaikutuksen lähteitä (asiakkaita), kun taas alemmat kerrokset vastaavat vain pyyntöihin (palvelimet).

MVC-mallissa on yleisesti hyväksytty, että näkymä voi suoraan tarkastella mallia (lukea) käymättä ohjaimen läpi. Toisaalta sen täytyy välttämättä käydä läpi ohjaimen muutoksen tekemiseksi (kirjoittaminen). Tällöin ohjausvirta on päinvastainen kerrostetusta mallista, jolloin ohjain voi lähettää pyyntöjä kaikkiin näkymiin, jotta ne päivittyvät.

Kolmannen tason arkkitehtuurissa, jos näkymä muuttaa tietoja, kaikki näkymät, joihin muutos vaikuttaa, on päivitettävä, joten MVC: n käytön hyödyllisyys esityskerroksessa. Esityskerros mahdollistaa siten sääntöjen laatimisen "päivitä X: ää koskevat näkymät, jos Y: tä tai Z: tä muokataan". Mutta näistä säännöistä tulee nopeasti liian monta ja hallitsematonta, jos loogiset suhteet ovat liian korkeat. Tässä tapauksessa yksinkertainen näkymien päivittäminen säännöllisin väliajoin voi helposti ratkaista tämän ongelman. Se on myös laajin ratkaisu kolmitasoisessa arkkitehtuurissa, MVC: n käyttö on nykyaikaista ja edelleen marginaalista.

Esimerkkejä MVC-arkkitehtuurista

ASP.NET: ssä

C ++: ssa

JavaScript-muodossa

TypeScriptissä

ECMAScriptissä

Groovyssä

Jaava

Kohteessa C

Perl

Web-suuntautuneet kehykset Perlissä  :

  • Katalysaattori  ;
  • CGI :: Sovellus: perustuu Perl-moduuliin CGI.pm;
  • Tanssija;
  • Pukki  : samanlainen kuin Django;
  • Jifty;
  • MasonX;
  • MayPole  : Katalyyttikerros;
  • 02;
  • Plack;
  • Solstice;
  • Kyykky.
  • Mojolicious

PHP: ssä

MVC-arkkitehtuuriin perustuvat kehykset :

Kehyksen käyttö ei ole velvoite.

Pythonissa

Ruby

Katso myös

Huomautuksia ja viitteitä

  1. (en) Stephen Walther, ASP.NET MVC Framework Unleashed , Sams Publishing - 2009, ( ISBN  9780768689785 )
  2. (en) Adam Freeman ja Steven Sanderson, Pro ASP.NET MVC 3 Framework , Apress - 2011, ( ISBN  9781430234043 )
  3. (en) Joey Lott ja Danny Patterson, Advanced ActionScript with Design Patterns , Adobe Press - 2007, ( ISBN  9780132701372 )
  4. “  MALLIT - NÄKYMÄT - OHJAIMET  ” osoitteessa http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html ,
  5. Model-View-Controller (MVC) sen menneisyys ja nykyisyys  " , osoitteessa http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html ,
  6. (en) John Ciliberti, ASP.NET MVC 4 Reseptit: ongelmanratkaisumenetelmä , Berkeley, Apress,, 632  Sivumäärä ( ISBN  978-1-4302-4774-6 , lue verkossa )
  7. (en) Colin Yates - Seth Ladd - Marten Deinum - Koen Serneels ja Christophe Vanfleteren, Pro Spring MVC: With Web Flow , Apress - 2012, ( ISBN  9781430241553 )
  8. (in) Fabien Potencier, Mikä on riippuvuus injektio  » , 26. maaliskuuta 2009.
  9. http://blog.nalis.fr/index.phppost/2009/10/19/Architecture-%3A-Le-Design-Pattern-MVC-en-PHP esimerkki MVC-toteutuksesta PHP: ssä]

Toivomme, että keräämämme tiedot Model-View-Controllersta ovat olleet sinulle hyödyllisiä. Jos näin on, älä unohda suositella meitä ystävillesi ja perheellesi ja muista, että voit aina ottaa meihin yhteyttä, jos tarvitset meitä. Jos parhaista yrityksistämme huolimatta sinusta tuntuu, että tarjoamamme tiedot _title eivät ole täysin tarkkoja tai että meidän pitäisi lisätä tai korjata jotain, olisimme kiitollisia, jos ilmoittaisit siitä meille. Parhaan ja kattavimman tiedon tarjoaminen Model-View-Controllersta ja mistä tahansa muusta aiheesta on tämän verkkosivuston ydin; meitä ohjaa sama henki, joka innoitti Encyclopedia Projectin luojia, ja tästä syystä toivomme, että se mitä olet löytänyt Model-View-Controllersta tältä verkkosivustolta, on auttanut sinua laajentamaan tietojasi.

Opiniones de nuestros usuarios

Marja Eklund

Tämä Model-View-Controller koskeva merkintä on auttanut minua saamaan huomisen työni valmiiksi viime hetkellä. Näin jo itseni palaamassa Wikipediaan, mitä opettaja kielsi meitä tekemästä. Kiitos, että pelastit minut

Svetlana Kumpulainen

Hyvä artikkeli aiheesta _muuttuja

Kasper Kolehmainen

Vihdoinkin artikkeli aiheesta _muuttuja, joka on helppolukuinen., Kiitos tästä kirjoituksesta aiheesta _muuttuja