MVC vs MVVM - Skillnaden mellan dem
Nyckelskillnader mellan MVC och MVVM
- MVC-ramverket รคr ett arkitektoniskt mรถnster som separerar en applikation i tre logiska huvudkomponenter Model, View och Controller. ร andra sidan underlรคttar MVVM en separation av utvecklingen av det grafiska anvรคndargrรคnssnittet med hjรคlp av uppmรคrkningssprรฅk eller GUI-kod
- I MVC รคr regulatorn ingรฅngspunkten till applikationen, medan i MVVM รคr vyn ingรฅngspunkten till applikationen.
- MVC Model komponent kan testas separat frรฅn anvรคndaren, medan MVVM รคr lรคtt fรถr separat enhetstestning, och koden รคr hรคndelsestyrd.
- MVC-arkitektur etablerar en "en-till-mรฅnga"-relation mellan Controller och View, medan MVVM-arkitektur definierar en "en-till-mรฅnga"-relation mellan View och ViewModel.
Vad รคr MVC?
Ocuco-landskapet MVC ramverk รคr ett arkitektoniskt mรถnster som separerar en applikation i tre logiska huvudkomponenter Model, View och Controller. Dรคrav fรถrkortningen MVC. Den fullstรคndiga MVC-formen รคr Model View Controller.
I denna arkitektur byggs en komponent fรถr att hantera specifika utvecklingsaspekter av en applikation. MVC separerar affรคrslogik och presentationslager frรฅn varandra. Detta arkitektoniska mรถnster anvรคnds frรคmst fรถr skrivbordsgrafiska anvรคndargrรคnssnitt (GUI).
Vad รคr MVVM?
MVVM-arkitekturen underlรคttar en separation av utvecklingen av det grafiska anvรคndargrรคnssnittet med hjรคlp av mรคrkningssprรฅk eller GUI-kod. Den fullstรคndiga formen av MVVM รคr ModelโViewโViewModel.
Vymodellen av MVVM รคr en vรคrdeomvandlare som innebรคr att det รคr vymodellens ansvar att exponera dataobjekten frรฅn Modellen pรฅ ett sรฅdant sรคtt att objekt enkelt hanteras och presenteras.
MVC-mรถnster

Tre viktiga MVC komponenterna รคr:
- Artikelnummer : Den inkluderar all data och dess tillhรถrande logik.
- Se: Presentera data fรถr anvรคndaren eller hanterar anvรคndarinteraktion.
- Kontroller: Ett grรคnssnitt mellan Model- och View-komponenter.
Lรฅt oss se var och en av denna komponent i detalj:
Modell
Modellkomponenten lagrar data och relaterad logik. Det representerar data som รถverfรถrs mellan kontrollerkomponenter eller nรฅgon annan relaterad affรคrslogik.
Ett Controller-objekt hjรคlper dig till exempel att hรคmta kundinformationen frรฅn databasen. Den manipulerar data och skickar tillbaka den till databasen eller anvรคnder den fรถr att รฅterge samma data.
Visa
En vy รคr den del av applikationen som representerar presentationen av data. Vyer skapas av data som samlats in frรฅn modelldata. En vy ber modellen att ge information sรฅ att den skickar utdata till anvรคndaren.
Vyn representerar ocksรฅ data frรฅn diagram, diagram och tabeller. Till exempel kommer alla kundvyer att inkludera alla UI-komponenter som textrutor, rullgardinsmenyer, etc.
Regulator
Controllern รคr den del av applikationen som hanterar anvรคndarinteraktionen. Styrenheten tolkar mus- och tangentbordsingรฅngarna frรฅn anvรคndaren och informerar modellen och vyn om att รคndras efter behov.
En styrenhet skickar kommandon till modellen fรถr att uppdatera dess tillstรฅnd (t.ex. att spara ett specifikt dokument). Styrenheten skickar ocksรฅ kommandon till dess associerade vy fรถr att รคndra vyns presentation (till exempel rulla ett visst dokument).
MVVM-mรถnster
Hรคr รคr ett mรถnster fรถr MVVM:

MVVM-arkitektur erbjuder tvรฅvรคgsdatabindning mellan vy och vymodell. Det hjรคlper dig ocksรฅ att automatisera spridningen av รคndringar i View-Model till vyn. View-modellen anvรคnder sig av observatรถrsmรถnster fรถr att gรถra รคndringar i view-modellen.
Lรฅt oss se varandra den hรคr komponenten i detalj:
Modell
Modellen lagrar data och relaterad logik. Det representerar data som รถverfรถrs mellan kontrollerkomponenter eller nรฅgon annan relaterad affรคrslogik.
Till exempel kommer ett Controller-objekt att hรคmta elevinformationen frรฅn skolans databas. Den manipulerar data och skickar tillbaka den till databasen eller anvรคnder den fรถr att รฅterge samma data.
Visa
The View stรฅr fรถr UI-komponenter som HTML, CSS, jQuery, etc. In
mรถnstervyn hรฅlls ansvarig fรถr att visa data som tas emot frรฅn styrenheten som ett resultat. Denna vy omvandlas ocksรฅ modell(er) till anvรคndargrรคnssnittet (UI).
Visa modell
Vymodellen รคr ansvarig fรถr att presentera funktioner, kommandon, metoder fรถr att stรถdja vyns tillstรฅnd. Det รคr ocksรฅ ansvarigt att anvรคnda modellen och aktivera hรคndelserna i vyn.
Skillnaden mellan MVC och MVVM Architecture
Hรคr รคr den viktiga skillnaden mellan MVVM och MVC
| MVC (Model View Controller) | MVVM (Model View ViewModel) |
|---|---|
| Controller รคr ingรฅngspunkten till applikationen. | Vyn รคr ingรฅngen till applikationen. |
| En till mรฅnga relationer mellan Controller & View. | En till mรฅnga relationer mellan View & View Model. |
| Visa har ingen referens till styrenheten | View har referenser till View-Modell. |
| MVC รคr gammal modell | MVVM รคr en relativt ny modell. |
| Svรฅrt att lรคsa, รคndra, enhetstesta och รฅteranvรคnda denna modell | Felsรถkningsprocessen kommer att bli komplicerad nรคr vi har komplexa databindningar. |
| MVC-modellkomponent kan testas separat frรฅn anvรคndaren | Lรคtt fรถr separat enhetstestning och koden รคr hรคndelsestyrd. |
Funktioner hos MVC
Hรคr รคr viktiga funktioner hos MVC:
- Enkel och friktionsfri testbarhet. Mycket testbart, utdragbart och pluggbart ramverk
- Du kan ocksรฅ utnyttja befintliga funktioner som erbjuds av ASP.NET, Django, JSP, etc.
- Det ger full kontroll รถver din HTML sรฅvรคl som din URLs.
- Den stรถder Test Driven Development (TDD)
- Denna arkitektur erbjuder separation av logik
- Tillรฅter routing fรถr SEO-vรคnlig URLs.
- Erbjuder kartlรคggning fรถr begriplig och sรถkbarhet URLs.
Funktioner hos MVVM
Hรคr รคr funktionerna i MVVM-arkitekturen:
- MVVM รคr skrivet fรถr skrivbordsapplikationer med databindningsfunktioner โ XAML och INotifyPropertyChanged-grรคnssnittet
- Om du vill gรถra รคndringar i View-Model, anvรคnder View-Model ett observatรถrsmรถnster.
- MVVM-mรถnstret anvรคnds mest av WPF, Silverlight, nRoute, etc.
Fรถrdelar med MVC
Hรคr finns fรถrdelar/fรถrdelar med MVC
- Enklare support fรถr en ny typ av klienter
- Utvecklingen av de olika komponenterna kan ske parallellt.
- Det undviker komplexitet genom att dela upp en applikation i separata (MVC) enheter
- Den anvรคnder bara ett frontkontrollmรถnster som bearbetar webbapplikationsfรถrfrรฅgningar med en enda kontroller.
- Erbjuder det bรคsta stรถdet fรถr testdriven utveckling
- Det fungerar bra fรถr webbappar, som stรถds av stora team av webbdesigners och utvecklare.
- Det ger en ren separation av bekymmer (SoC).
- Alla klassade och objekt รคr oberoende av varandra sรฅ att du kan testa dem separat.
- MVC tillรฅter logiska grupperping av relaterade รฅtgรคrder pรฅ en kontrollant tillsammans.
Fรถrdelar med MVVM
Hรคr finns fรถrdelar/fรถrdelar med MVVM
- Affรคrslogik รคr frikopplad frรฅn Ul
- Lรคtt att underhรฅlla och testa
- Lรคtt att รฅteranvรคnda komponenter
- Lรถst kopplad arkitektur: MVVM gรถr din applikationsarkitektur lika lรถst kopplad.
- Du kan skriva enhetstestfall fรถr bรฅde vymodellen och modelllagret utan att behรถva referera till vyn.
Nackdelar med MVC
Hรคr รคr nackdelar/nackdelar med MVC
- Affรคrslogik blandas med Ul
- Svรฅrt att รฅteranvรคnda och genomfรถra tester
- Inget formellt valideringsstรถd
- รkad komplexitet och ineffektivitet av data
- Svรฅrigheten att anvรคnda MVC med det moderna anvรคndargrรคnssnittet
- Det finns ett behov av flera programmerare fรถr att utfรถra parallell programmering.
- Kunskaper om flera tekniker krรคvs.
Nackdelar med MVVM
Hรคr รคr nackdelar/nackdelar med MVVM
- Underhรฅll av massor av koder i controller
- Vissa mรคnniskor tror att fรถr enkla anvรคndargrรคnssnitt av MVVM-arkitektur kan det vara รถverdrivet.
- Inte erbjuder tรคt koppling mellan vy och vymodell

