MVC vs MVVM - Diferența dintre ei
Diferențele cheie între MVC și MVVM
- Cadrul MVC este un model arhitectural care separă o aplicație în trei componente logice principale Model, View și Controller. Pe de altă parte, MVVM facilitează o separare a dezvoltării interfeței grafice cu utilizatorul cu ajutorul limbajului de marcare sau a codului GUI
- În MVC, controlerul este punctul de intrare în aplicație, în timp ce în MVVM, vizualizarea este punctul de intrare în aplicație.
- Componenta modelului MVC poate fi testată separat de utilizator, în timp ce MVVM este ușor pentru testarea unitară separată, iar codul este determinat de evenimente.
- Arhitectura MVC stabilește o relație „unu-la-mulți” între Controller și View, în timp ce arhitectura MVVM definește o relație „unu-la-mulți” între View și ViewModel.
Ce este MVC?
Cadrul MVC este un model arhitectural care separă o aplicație în trei componente logice principale Model, View și Controller. De aici abrevierea MVC. Forma completă MVC este Model View Controller.
În această arhitectură, o componentă este construită pentru a gestiona aspecte specifice de dezvoltare ale unei aplicații. MVC separă logica de afaceri și stratul de prezentare unul de celălalt. Acest model arhitectural este utilizat în principal pentru interfețele grafice cu utilizatorul (GUI) pentru desktop.
Ce este MVVM?
Arhitectura MVVM facilitează o separare a dezvoltării interfeței grafice cu utilizatorul cu ajutorul limbajului de marcare sau a codului GUI. Forma completă a MVVM este Model–View–ViewModel.
Modelul de vizualizare al MVVM este un convertor de valori, ceea ce înseamnă că este responsabilitatea modelului de vizualizare de a expune obiectele de date din Model în așa fel încât obiectele să fie ușor de gestionat și prezentat.
Model MVC

Trei componente MVC importante sunt:
- Model: Include toate datele și logica aferentă acesteia.
- Vizualizare: Prezentați date utilizatorului sau gestionează interacțiunea utilizatorului.
- Controlor: O interfață între componentele Model și View.
Să vedem fiecare dintre aceste componente în detaliu:
Model
Componenta model stochează date și logica aferentă. Reprezintă date care sunt transferate între componentele controlerului sau orice altă logică de afaceri aferentă.
De exemplu, un obiect Controller vă ajută să preluați informațiile despre client din baza de date. Acesta manipulează datele și le trimite înapoi la baza de date sau le folosește pentru a reda aceleași date.
Vizualizare
O vizualizare este acea parte a aplicației care reprezintă prezentarea datelor. Vizualizările sunt create de datele colectate din datele modelului. O vizualizare solicită modelului să ofere informații, astfel încât să îi retrimite utilizatorului rezultatul.
Vizualizarea reprezintă, de asemenea, datele din diagrame, diagrame și tabel. De exemplu, orice vizualizare a clientului va include toate componentele UI, cum ar fi casetele de text, meniurile derulante etc.
operator de date cu caracter personal,
Controller-ul este acea parte a aplicației care se ocupă de interacțiunea utilizatorului. Controlerul interpretează intrările mouse-ului și tastaturii de la utilizator, informând modelul și vizualizarea să se schimbe după caz.
Un controler trimite comenzi către model pentru a-și actualiza starea (de exemplu, salvarea unui anumit document). Controlerul trimite, de asemenea, comenzi către vizualizarea asociată pentru a modifica prezentarea vizualizării (de exemplu, derularea unui anumit document).
Model MVVM
Iată un model pentru MVVM:

Arhitectura MVVM oferă legare bidirecțională a datelor între vizualizare și model de vizualizare. De asemenea, vă ajută să automatizați propagarea modificărilor din interiorul View-Model către vizualizare. Modelul de vizualizare folosește modelul de observator pentru a face modificări în modelul de vedere.
Să ne vedem în detaliu această componentă:
Model
Modelul stochează date și logica aferentă. Reprezintă date care sunt transferate între componentele controlerului sau orice altă logică de afaceri aferentă.
De exemplu, un obiect Controller va prelua informațiile despre elev din baza de date a școlii. Acesta manipulează datele și le trimite înapoi la baza de date sau le folosește pentru a reda aceleași date.
Vizualizare
Vizualizarea reprezintă componentele UI precum HTML, CSS, jQuery etc. În
Model View este responsabil pentru afișarea datelor care sunt primite de la Controlor ca rezultat. Această vizualizare este, de asemenea, transformată (modelele) în interfața cu utilizatorul (UI).
Vezi model
Modelul de vizualizare este responsabil pentru prezentarea funcțiilor, comenzilor, metodelor, pentru a susține starea Vederii. De asemenea, este responsabil să opereze modelul și să activeze evenimentele din vizualizare.
Diferența dintre MVC și MVVM Architectură
Iată diferența importantă dintre MVVM și MVC
| MVC (model View controller) | MVVM (Model View ViewModel) |
|---|---|
| Controlerul este punctul de intrare în aplicație. | Vederea este punctul de intrare în aplicație. |
| Una până la multe relații între Controller și View. | Una până la multe relații între View și View Model. |
| Vizualizare nu are referință la controler | View au referințe la View-Model. |
| MVC este modelul vechi | MVVM este un model relativ nou. |
| Este dificil de citit, modificat, de testat unitar și de reutilizat acest model | Procesul de depanare va fi complicat atunci când avem legături complexe de date. |
| Componenta modelului MVC poate fi testată separat de utilizator | Ușor pentru testarea unitară separată, iar codul este determinat de evenimente. |
Caracteristicile MVC
Iată caracteristicile importante ale MVC:
- Testabilitate ușoară și fără frecare. Cadru extrem de testabil, extensibil și conectabil
- De asemenea, puteți profita de funcțiile existente oferite de ASP.NET, Django, JSP etc.
- Oferă control deplin asupra HTML-ului, precum și asupra URLs.
- Acceptă dezvoltarea bazată pe teste (TDD)
- Această arhitectură oferă separarea logicii
- Permite rutarea pentru optimizare SEO URLs.
- Ofertă pentru cartografiere inteligibilă și ușor de căutat URLs.
Caracteristicile MVVM
Iată caracteristicile arhitecturii MVVM:
- MVVM este scris pentru aplicația desktop cu capabilități de legare a datelor – XAML și interfața INotifyPropertyChanged
- Dacă doriți să faceți modificări în modelul de vizualizare, modelul de vizualizare folosește un model de observator.
- Modelul MVVM este folosit în mare parte de extensia wp, Silverlight, nRoute etc.
Avantajele MVC
Iată avantajele / avantajele MVC
- Suport mai ușor pentru un nou tip de clienți
- Dezvoltarea diferitelor componente se poate realiza paralel.
- Evită complexitatea prin împărțirea unei aplicații în unități separate (MVC).
- Utilizează doar un model de controler frontal care procesează cererile de aplicații web folosind un singur controler.
- Oferă cel mai bun suport pentru dezvoltarea bazată pe teste
- Funcționează bine pentru aplicațiile web, care sunt susținute de echipe mari de designeri și dezvoltatori web.
- Oferă o separare clară a preocupărilor (SoC).
- Toate obiectele clasificate și sunt independente unele de altele, astfel încât să le puteți testa separat.
- MVC permite gruparea logicăping a acțiunilor corelate pe un controler împreună.
Avantajele MVVM
Iată avantajele/beneficiile MVVM
- Logica de afaceri este decuplată de Ul
- Ușor de întreținut și testat
- Componente usor de reutilizat
- Arhitectură slab cuplată: MVVM face ca arhitectura aplicației dvs. să fie la fel de slab cuplată.
- Puteți scrie cazuri de testare unitară atât pentru modelul de vizualizare, cât și pentru stratul Model fără a fi nevoie să faceți referire la vizualizare.
Dezavantajele MVC
Iată dezavantajele/dezavantajele MVC
- Logica de afaceri este amestecată cu Ul
- Greu de reutilizat și de implementat teste
- Fără suport formal de validare
- Complexitate crescută și ineficiență a datelor
- Dificultatea utilizării MVC cu interfața de utilizator modernă
- Este nevoie de mai mulți programatori pentru a efectua programarea paralelă.
- Este necesară cunoașterea mai multor tehnologii.
Dezavantajele MVVM
Iată dezavantajele/dezavantajele MVVM
- Menținerea multor coduri în controler
- Unii oameni cred că pentru interfețele simple ale arhitecturii MVVM poate fi exagerat.
- Nu oferă o cuplare strânsă între vedere și modelul de vedere

