Skillnad mellan MVVM och MVP Skillnad mellan

Anonim

Syftet med mjukvaruutveckling vara att bygga lösningar som adresserar behov och problem för användare och företag. För att uppnå detta används olika tekniker och arkitekturmönster som Model-View-ViewModel (MVVM) och Model-View-Presenter (MVP) .

Som med allt som tillverkas är det första steget planerings- och designfasen. Programvaruprocessen kan vara en specifikation baserad på den föredragna tekniksäkerhetsuppsättningen, och den kan omfatta all aktivitet från koncept - till - planering - till - implementering - till - uppdateringar och modifieringar.

Den täcker arkitektonisk design på låg nivå och hög nivå baserat på utvalda arkitekturmönster och kartlägger återanvändbara lösningar med hjälp av mönster.

Programverktygsstruktur

Programarkitektur definierar en applikationsstruktur som uppfyller tekniska, operativa och användarkrav och hänvisar till hur koden är organiserad och hanterad.

Att bestämma om en programvara är arkitektur är kritisk eftersom det inte är en lätt, bytbar del av en applikation som redan är utvecklad. Därför måste det arkitektoniska mönstret avgöras innan någon programmering påbörjas.

Arkitektoniska mönster är något annorlunda än designmönster, eftersom deras omfattning är mycket bredare genom att ta itu med fler tekniska problem som hårdvarans prestanda och begränsningar och hög tillgänglighet. Exempel på olika arkitekturmönster är MVC, MVVM och MVP.

Å andra sidan är designmönster formaliserade bästa praxis som underlättar återanvändningsobjektorienterad utveckling och är enklare att underhålla och förändra än en applikations arkitektur.

-> ->

Arkitekturmönster

Model View Controller (MVC) var ett av de första arkitektoniska mönstren som utvecklats för webbapplikationer och blev populär från mitten till slutet av nittiotalet, särskilt med Java-community.

De nyare ramarna, som Django för Python och Rails (Ruby on Rails), har ett starkt fokus på snabb implementering, varför MVC tar upp marknadsandelen som den stora attraktionen i arkitektoniska mönster.

Traditionellt innehöll användargränssnittet mycket kod för hantering av komplicerad logik, så arkitekturmönster var utformade för att minska koden på användargränssnittets gränssnitt (UI), vilket gör det mer "rent" och hanterbart.

Så, med MVC-mönstret, består en webbapplikation av

  • Modell (data)
  • Visa (gränssnitt för att visa och manipulera data)
  • Controller och åtgärder som utförs på data)

Modell hanterar data- och affärslogiken och det finns nej beroenden mellan Modell och Controller < eller Visa .

Visa presenterar data för användaren i det format som stöds och den nödvändiga layouten, och när Controller tar emot användarförfrågningar (för att hämta data) ringer den till relevanta resurser som behövs för att slutföra begäran. Låt oss tillämpa det här mönstret för att bygga en online bokhandel.

Användare kan söka, visa, registrera och köpa böcker, samt hantera sina profiler och boklistor. När en användare klickar på SCI-FI-kategorin ska alla relaterade böcker visas som tillgängliga.

Controllers hanterar de åtgärder som hanterar böckerna (lista, lägga till, visa osv.). Det kan vara flera Controllers med en huvud Controller "rikta trafiken". I detta exempel heter

Controller controller_books. php och Modell (t.ex. modell_böcker. php) hanterar data och logik relaterad till böckerna. Slutligen krävs olika

Visningar, som när du lägger till böcker i online-vagnen eller när du tittar på bokdetaljen med bilder och recensioner. De

controller_books. php tar emot åtgärden (användarförfrågan) från huvudmenyn Controller (fd index. php ). De controller_books. php analyserar begäran och kallar model_books. php (data) för att returnera listan över SCI-FI-böcker. Ansvaret för

Modell är att tillhandahålla den informationen med hjälp av en logik som tillämpades (med hjälp av sökfilter). Controller tar sedan informationen och skickar den till relevant Visa (sökvisning, utskriftsvy, detaljvy etc.) och informationen presenteras (via Visa >) till användaren som initierade begäran. Detta är grunden för MVC-mönstret, som har utvecklat spionvariationer av arkitekturmönster, till exempel Model View-Presenter (MVP), Model View-ViewModel (MVVM), Hierarchical-Model View-Controller (HMVC) och modellvisningsadapter (MVA) etc. MVP-mönster

Model-View-Presenter (MVP)

MVP-mönstret

har funnits en stund och är en variant av MVC. Det var speciellt utformat för testautomatisering, där målet var att öka mängden kod som kan testas genom automatisering, och mönstret behandlar vissa problem med presentationsskiktet, isolering av affärslogik från användargränssnittet. Skärmen är View, de data som visas är modellen, och presentatorn hakar de två tillsammans. MVP

innehåller följande komponenter med separat ansvar:

Modell (definierar de data som ska visas)

  • Visa (visar data från modellförfrågningar och rutteranvändarförfrågningar till Presentatör).
  • Presenter (växlar mellan Visa och Modell och hakar dem ihop)
  • Visa

(en webbsida) visar och hanterar sidkontrollerna genom att vidarebefordra händelser (användarförfrågningar) till Presenter som initierades i View . Presenter

svarar på dessa händelser genom att läsa och uppdatera Modell för att ändra Visa och därför är ansvaret för Presenter att binda Modell och Visa . När man tittat på MVC

och MVP -mönstren, har gemensamheten båda separata ansvarsområden för varje komponent och de främjar separation mellan View (UI) och Modell (data). Betydande skillnader mellan dessa mönster är tydligare i hur mönstren implementeras. MVP kan vara ett komplext mönster att implementera för avancerade lösningar men har säkert stora fördelar om den implementeras som en väldesignad lösning, men det kan inte nödvändigtvis vara det lämpliga valet för enkla lösningar.

MVVM mönstret

var särskilt utformat för Windows Presentation Foundation (WPF) och Microsoft Silverlight-plattformar, och det kan vara används på alla

XAML [i]

plattformar. WPF är ett Microsoft-system som gör användargränssnitt i Windows-baserade program och släpptes för första gången i.NET Framework 3. 0. MVVM raffinerades från MVC och i det här mönstret

View

är aktiv med beteenden, händelser och databindningar, och Visa synkroniseras med ViewModel (vilket möjliggör separation av presentationen och exponering av metoder MVVM består av tre kärnkomponenter: Modell (representerar data med validering och affärslogik) > (Vyn är ansvarig för att definiera strukturen, layouten och utseendet på vad användaren ser på skärmen. Idealiskt är visningen definierad rent med XAML, med en begränsad kod bakom det som inte innehåller affärslogik. Tvåvägsdata -bindning mellan View och ViewModel

för att visa synkroniserar modellen och ViewModel med Viewen) ViewModel

  • (skiljer vyn från th e-modell och exponerar metoder och kommandon för att manipulera data (modell).
  • Visa tar emot data från ViewModel (genom databindande och metoder) och vid körning ändras Visa när man svarar på händelser i den
  • Viewmodel .

ViewModel förmedlar mellan Visa och Modell och hanterar View logiken. Den interagerar med

Modell - tar data från Modell och presenterar den för View för visning. Dessa komponenter är alla frikopplade från varandra vilket möjliggör större flexibilitet att arbeta med dem oberoende, isolera testning av enheter och byta ut dem utan att påverka någon annan komponent. Denna struktur gör det möjligt för Modell och andra komponenter att utvecklas oberoende, så att utvecklare kan arbeta på olika aspekter av lösningen samtidigt. Till exempel, där designers arbetar på View , genererar de helt enkelt dataprøver utan att behöva komma åt de andra komponenterna. Detta underlättar enkel omkonstruktion av användargränssnittet eftersom View implementeras i XAML. Som tidigare nämnts med

MVP, skulle enkla lösningar inte behöva arkitektur och designmönster, som "Hello World!"Är för grundläggande för att följa något mönster; Men eftersom fler funktioner, funktioner och komponenter introduceras ökar applikationens komplexitet och även hur mycket kod som behöver hanteras. I sammanfattning Sedan starten av användargränssnittet utvecklas designmönster alltmer populär för att underlätta utvecklingsprocessen, applikationerna är skalbara och det underlättar enklare testning. Illustrerad skillnad mellan MVP- och MVVM-mönstren: I både MVP och

MVVM är View

ingångspunkten för programmet > I

MVP

finns det en-till-ett-kartläggning mellan

  • Visa och Presenter , där i MVVM är förhållandet en -till-många mellan Visa
  • och ViewModel . MVP används främst för Windows Forms och Windows Phone-program och MVVM är utformad för Silverlight, WPF, Knockout / AngularJS, etc.