Forskjell mellom MVVM og MVP Forskjellen mellom

Anonim

Formålet med programvareutvikling å bygge løsninger som adresserer behov og problemer for brukere og bedrifter. For å oppnå dette brukes ulike teknologier og arkitekturmønstre som Model-View-ViewModel (MVVM) og Model-View-Presenter (MVP) .

Som med alt som er produsert, er det første trinnet planleggings- og designfasen. Programvareprosessprosessen kan være en spesifikasjon basert på det foretrukne teknologiske verktøyet, og det kan omfatte all aktivitet fra oppfattelse - til - planlegging - til - implementering - til - oppdateringer og modifikasjoner.

Den dekker arkitektonisk design på lavt nivå og på høy nivå, basert på utvalgte arkitekturmønstre, og kartlegger gjenbrukbare løsninger ved hjelp av designmønstre.

Programvare-applikasjonsstruktur

Programvarearkitektur definerer en applikasjonsstruktur som oppfyller tekniske, operasjonelle og brukerkrav og refererer til hvordan koden er organisert og administrert.

Det er viktig å avgjøre arkitektur på et program, da det ikke er en lett, foranderlig del av et program som allerede er utviklet. Derfor må det arkitektoniske mønsteret avgjøres før programmering påbegynnes.

Arkitektoniske mønstre er noe annerledes enn designmønstre, da deres omfang er mye bredere ved å ta opp flere tekniske problemer som maskinvareytelse og begrensninger og høy tilgjengelighet. Eksempler på forskjellige arkitekturmønstre er MVC, MVVM og MVP.

På den annen side er designmønstre formaliserte beste praksis som letter gjenbrukbar objektorientert utvikling og er lettere å vedlikeholde og forandre enn en applikasjons arkitektur.

Arkitekturmønstre

Model View Controller (MVC) var et av de første arkitektoniske mønstrene utviklet for webapplikasjoner, og ble populært fra midten til slutten av nittitallet, spesielt med Java-fellesskapet.

De nyere rammene, for eksempel Django for Python and Rails (Ruby on Rails), har sterkt fokus på rask distribusjon, og derfor tar MVC markedsandelen som den store attraksjonen i arkitektoniske mønstre.

Tradisjonelt inneholdt brukergrensesnittsutvikling mye kode for å håndtere komplisert logikk, så arkitekturmønstre ble designet for å redusere koden på brukergrensesnittets (UI) nivå, noe som gjør det mer "rent" og håndterbart.

Så med MVC-mønsteret er en webapplikasjon sammensatt av

  • Modell (data)
  • Vis (grensesnitt for visning og manipulering av data)
  • Controller (operasjoner og handlinger utført på dataene)

Modell håndterer data- og forretningslogikk og det er nei avhengigheter mellom Modell og Controller < eller Vis .

Vis presenterer dataene til brukeren i formatet og formatet som støttes, og når Controller mottar brukerforespørsler (for å hente data), kaller det de nødvendige ressursene for å fullføre forespørselen. La oss bruke dette mønsteret til å bygge en online bokhandel.

Brukere kan søke, vise, registrere og kjøpe bøker, samt administrere profiler og boklister. Når en bruker klikker på SCI-FI-kategorien, bør alle relaterte bøker vises som tilgjengelige.

Controllers håndterer handlingene som håndterer bøkene (liste, legge til, vise osv.). Det kan være flere Controllers med en hoved Controller 'dirigere trafikken'. For dette eksempelet heter

Controller controller_books. php og modell (for eksempel model_books. php) håndterer dataene og logikken knyttet til bøkene. Til slutt vil forskjellige

Visninger være påkrevd, som når du legger til bøker i online-handlekurven eller når du ser bokdetaljer med bilder og anmeldelser. I

controller_books. php mottar handlingen (brukerforespørsel) fra hovedmenyen Controller (f. index. php ). De controller_books. php analyserer forespørselen og kaller model_bøker. php (dataene) for å returnere listen over SCI-FI-bøker. Ansvaret for

Modell er å gi den informasjonen, ved hjelp av en logikk som ble brukt (ved hjelp av søkefiltre). Controller tar deretter informasjonen og sender den til det relevante Vis (søkevisning, utskriftsvisning, detaljvisning osv.) Og informasjonen presenteres (via Vis >) til brukeren som startet forespørselen. Dette er grunnleggende for MVC-mønsteret, som har utviklet gytevarianter av arkitekturmønstre, for eksempel Model View-Presenter (MVP), Model View-ViewModel (MVVM), Hierarchical-Model-View-Controller (HMVC) og modellvisningsadapter (MVA) osv. MVP-mønster

Modell-View-Presenter (MVP)

MVP-mønsteret

har eksistert en stund og er en variant av MVC. Det ble designet spesielt for testautomatisering hvor målet var å øke mengden kode som kan testes gjennom automatisering, og mønsteret adresserer enkelte problemer med presentasjonslaget, isolerer forretningslogikk fra brukergrensesnittet. Skjermen er Vis, dataene som vises, er modellen, og presentatoren knytter de to sammen. MVP

består av følgende komponenter med eget ansvar:

Modell (definerer dataene som skal vises)

  • Vis (viser dataene fra modell- og ruteforespørsler til brukeren Presenter).
  • Presenter (samvirker mellom visning og modell og samler dem sammen)
  • Vis

(en nettside) viser og styrer sidekontrollene ved å videresende hendelser (brukeranmodninger) til Presenter som ble initiert i View . Presenter

reagerer på disse hendelsene ved å lese og oppdatere Modell for å endre Vis og derfor er ansvaret for Presenter å binde Modell og Se . Når man ser på MVC

og MVP -mønstrene, har commonality begge separate ansvar for hver komponent, og de fremmer separasjon mellom View (UI) og Model (data). Vesentlige forskjeller mellom disse mønstrene er tydeligere i hvordan mønstrene implementeres. MVP kan være et komplekst mønster å implementere for avanserte løsninger, men har absolutt gode fordeler hvis det implementeres som en velfungerende løsning, selv om det ikke nødvendigvis er det rette valget for enkle løsninger.

MVVM-mønsteret Modell-View-ViewModel (MVVM)

MVVM

mønsteret ble spesielt utviklet for Windows Presentation Foundation (WPF) og Microsoft Silverlight-plattformer, og det kan være brukes på alle XAML [i] plattformer. WPF er et Microsoft-system som gir brukergrensesnitt i Windows-baserte programmer og ble først utgitt i. NET Framework 3. 0. MVVM

ble raffinert fra

MVC og i dette mønsteret, View er aktiv med atferd, hendelser og datainnbinding, og Vis synkroniseres med ViewModel (som muliggjør adskillelse av presentasjonen og avslører metoder MVVM består av tre kjerneelementer: Modell (representerer dataene med validering og forretningslogikk) > (Visningen er ansvarlig for å definere strukturen, oppsettet og utseendet til hva brukeren ser på skjermen. Ideelt sett er visningen bare definert med XAML, med en begrenset kode-bak som ikke inneholder forretningslogikk. Toveisdata -binding mellom

View og

  • ViewModel til displayenables synkronisering av modellen og ViewModel med View)
  • ViewModel (skiller visningen fra e-modell, og avslører metoder og kommandoer for å manipulere dataene (modell). View mottar data fra ViewModel
  • (via data-binding og metoder), og i løpet av tiden vil View

endres når du svarer på hendelser i den ViewModel . ViewModel medierer mellom Vis og Modell

og håndterer Vis logikken. Den samhandler med Model - tar dataene fra Model og presenterer den til Vis for å vise. Disse komponentene er alle koblet fra hverandre, noe som gir større fleksibilitet til å fungere uavhengig av hverandre, isolerer enhetstesting og bytter dem ut uten å påvirke noen annen komponent. Denne strukturen gjør at Model og andre komponenter kan utvikle seg selvstendig, slik at utviklere kan jobbe på ulike sider av løsningen samtidig. For eksempel, hvor designere jobber på View , genererer de ganske enkelt dataprøver uten å måtte ha tilgang til de andre komponentene. Dette muliggjør enkel redesign av brukergrensesnittet som

View

er implementert i XAML. Som nevnt tidligere med MVP , ville enkle løsninger ikke trenge arkitektur og designmønstre, som "Hello World!"Er for grunnleggende for å følge noen mønster; Men som flere funksjoner, funksjoner og komponenter blir introdusert, øker programmets kompleksitet, og det gjør også mengden kode som må administreres. I sammendrag Siden begynnelsen av brukergrensesnittutvikling blir designmønstre stadig mer populære for å gjøre utviklingsprosessen enklere, applikasjonene skalerbare og det letter enklere testing. Illustrert forskjell mellom MVP- og MVVM-mønstrene:

I både MVP og

MVVM

er

View

  • inngangspunktet til programmet > I MVP er det en-til-en-kartlegging mellom Vis og Presenter , hvor i
  • MVVM er forholdet en -til-mange mellom Vis og ViewModel . MVP brukes primært til Windows Forms og Windows Phone applikasjoner, og MVVM er designet for Silverlight, WPF, Knockout / AngularJS, etc.