Modell-visning-kontroller

Model-view-controller ( MVC , noen ganger oversatt til italiensk som model-view-control ), i informatikk , er et svært utbredt arkitektonisk mønster i utviklingen av programvaresystemer , spesielt i sammenheng med objektorientert programmering og applikasjonsnett. , i stand til å skille datapresentasjonslogikken fra forretningslogikken . [1] Dette mønsteret er posisjonert på logisk eller forretnings- og presentasjonsnivå i en flerlagsarkitektur .

Beskrivelse

Komponenter

Den sentrale komponenten i MVC, modellen, fanger opp oppførselen til applikasjonen når det gjelder problemdomenet, uavhengig av brukergrensesnittet. Modellen styrer direkte data, logikk og regler for applikasjonen. En visning kan være en hvilken som helst utdatarepresentasjon av informasjon, for eksempel en graf eller diagram. Flere visninger av samme informasjon er mulig, for eksempel et stolpediagram for administrasjon og en tabellvisning for administrasjon. Tredjeparten, kontrolleren, aksepterer inngangen og konverterer den til kommandoer for modellen og/eller visningen.

Struktur

Mønsteret er basert på separasjon av oppgaver mellom programvarekomponentene som spiller tre hovedroller:

Dette opplegget innebærer blant annet også det tradisjonelle skillet mellom applikasjonslogikken (i denne sammenheng ofte kalt " forretningslogikk "), belastet kontrolleren og modellen , og brukergrensesnittet belastet visningen . [2]

Detaljene i interaksjonene mellom disse tre programvareobjektene avhenger veldig av teknologiene som brukes ( programmeringsspråk , eventuelle biblioteker , mellomvare og så videre) og av typen applikasjon (for eksempel hvis det er en nettapplikasjon eller en skrivebordsapplikasjon ) . Nesten alltid kan forholdet mellom syn og modell også beskrives som en forekomst av Observer -mønsteret . Noen ganger, når det er nødvendig å endre standardoppførselen til applikasjonen i henhold til omstendighetene, implementerer kontrolleren også strategimønsteret .

Bruk

Historisk sett har MVC-mønsteret blitt implementert på serversiden. Nylig, med utviklingen og delvis standardisering av JavaScript , ble de første implementeringene på klientsiden født. [3]

Server side

Opprinnelig brukt av Smalltalk -språket , har mønsteret blitt eksplisitt eller implisitt fremmet av en rekke moderne teknologier, for eksempel PHP - baserte rammeverk ( Symfony , Laravel , Zend Framework , CakePHP , Yii-rammeverk , CodeIgniter ), på Ruby ( Ruby on Rails ), på Python ( Django , TurboGears , Pylons , Web2py , Zope ), på Java ( Spring , JSF og Struts ), på Objective C eller på .NET .

På grunn av den økende spredningen av MVC-baserte teknologier i sammenheng med rammeverk eller mellomvareplattform for nettapplikasjoner , kommer begrepet MVC-rammeverk eller MVC -system også i bruk for å spesifikt indikere denne kategorien av systemer (som inkluderer for eksempel Ruby on Rails , Struts , Spring , Tapestry and Catalyst ).

Klientsiden

De siste årene har etterspørselen etter Rich Internet-applikasjoner som foretar asynkrone anrop til serveren ( AJAX ) økt, uten å gjøre omdirigeringer for å se resultatene av behandlingen. Etter hvert som mengden JavaScript kjører på klienten vokste, var det behov for å lage de første rammeverkene som implementerte MVC i ren JavaScript. En av de første var Backbone.js, etterfulgt av en uendelig serie med andre rammeverk, inkludert JavaScriptMVC, Ember og AngularJS.

Eksempel

I J2EE er et typisk eksempel på underinndelingen av applikasjonen i JSP (for front-end eller visning), Servlet for kontrolleren og en Java-fil for forretningslogikken for grensesnitt eller modell med en DB . Når dette ikke er til stede , implementerer et MVC- rammeverk den samme logikken/skjemaet som forenkler alt.

Merknader

  1. ^ For en introduksjon i universitetsstil, se disse lysbildene . For en introduksjon til MVC-mønsteret fra et Java-perspektiv, se denne artikkelen Arkivert 24. desember 2012 på Internet Archive . på Mokabyte, for en introduksjon fra et Microsoft-perspektiv, se denne artikkelen om MSDN.
  2. ^ Se Martin Fowlers artikkel .
  3. ^ Les denne flotte introduksjonen

Relaterte elementer

Andre prosjekter