Razlika između MVVM i MVP

Svrha razvoja softvera je izgraditi rješenja koja se bave potrebama i problemima za korisnike i tvrtke. Da bi se to postiglo, vole različite tehnologije i obrasci arhitekture Model-View-ViewModel (MVVM) i Prezentacija modela (MVP) su korišteni.

Kao i kod svega što se proizvede, prvi korak je faza planiranja i dizajna. Proces dizajniranja softvera može biti specifikacija koja se temelji na preferiranom skupu alata za tehnologiju i može obuhvatiti sve aktivnosti od začeća - do - planiranja - do - implementacije - do - ažuriranja i modifikacija.

Obuhvaća arhitektonski dizajn niske i visoke razine, zasnovan na odabranim uzorcima arhitekture, i prikazuje nacrte rješenja za višekratnu upotrebu koristeći dizajnerske uzorke.

Struktura softverske aplikacije

Softverska arhitektura definira strukturu aplikacije koja zadovoljava tehničke, operativne i korisničke zahtjeve i odnosi se na način organiziranja i upravljanja kôdom.

Odlučivanje o arhitekturi softverske aplikacije je presudno jer nije lako, promjenjiv dio aplikacije koji je već razvijen; stoga se prije početka bilo kakvog programiranja mora odlučiti o arhitektonskom uzorku.

Arhitektonski obrasci donekle se razlikuju od obrazaca dizajna, jer je njihov opseg mnogo širi rješavanjem više tehničkih problema, poput performansi i ograničenja hardvera, te velike dostupnosti. Primjeri različitih obrazaca arhitekture su MVC, MVVM i MVP.

S druge strane, obrasci dizajna formalizirani su najbolji postupci koji olakšavaju višestruko objektno orijentirani razvoj i lakši su za održavanje i promjenu od arhitekture aplikacije. 

Obrasci arhitekture

Model kontrolera (MVC) bio je jedan od prvih arhitektonskih obrazaca razvijenih za web aplikacije, koji je stekao popularnost od sredine do kraja devedesetih, osobito u zajednici Java.

Noviji okviri, poput Django za Python i Rails (Ruby on Rails), snažno su usmjereni na brzu implementaciju, zbog čega MVC zauzima tržišni udio kao veliku atrakciju u arhitektonskim obrascima..

Tradicionalno, razvoj korisničkog sučelja sadrži puno koda za obradu složene logike, pa su obrasci arhitekture dizajnirani da smanje kôd na razini korisničkog sučelja (UI), čineći ga 'čistijim' i upravljivijim.

Dakle, s uzorkom MVC-a sastoji se web aplikacija

  • Model (podaci)
  • Pogled (sučelje za pregled i upravljanje podacima)
  • kontrolor (radnje i radnje izvedene na podacima)

Model obrađuje podatke i poslovnu logiku i postoje Ne ovisnosti između Model i the kontrolor ili Pogled.

Pogled korisniku prikazuje podatke u podržanom formatu i potrebnom izgledu, a kada kontrolor prima zahtjeve korisnika (radi dohvaćanja podataka), poziva relevantne resurse potrebne za ispunjavanje zahtjeva.

Primijenimo ovaj obrazac za izgradnju internetske trgovine s knjigama.

Korisnici mogu pretraživati, pregledavati, registrirati i kupiti knjige, kao i upravljati njihovim profilima i popisima knjiga. Kada korisnik klikne na SCI-FI kategoriju, sve povezane knjige trebale bi se prikazati kao dostupne.

kontroleri rukovanje radnjama koje upravljaju knjigama (popis, dodavanje, prikaz itd.). Može ih biti više kontroleri s jednim glavnim kontrolor 'usmjeravanje prometa'.

Za ovaj primjer kontrolor je nazvan controller_books.php i Model (npr. model_books.php) upravlja podacima i logikom povezanim s knjigama.

Napokon, drugačije Posjeta trebat će vam, primjerice, prilikom dodavanja knjiga u internetsku košaricu ili prilikom pregledavanja detalja knjige sa slikama i recenzijama.

controller_books.php prima glavnu radnju (zahtjev korisnika) kontrolor (na pr. index.php). controller_books.php analizira zahtjev i poziva model_books.php (podaci) za vraćanje popisa SCI-FI knjiga.

Odgovornost Model jest pružiti te podatke koristeći bilo koju logiku koja je primijenjena (pomoću filtara pretraživanja). kontrolor zatim uzima informaciju i prosljeđuje je relevantnom Pogled (prikaz pretraživanja, prikaz ispisa, prikaz detalja itd.), a informacije su predstavljene (putem Pogled) korisniku koji je pokrenuo zahtjev.

To je osnova MVC obrasca, koji je evoluirao u mrijestu varijacije arhitektonskih obrazaca, kao što su Model-View-Presenter (MVP), Model-View-ViewModel (MVVM), Hierarchical-Model-View-Controller (HMVC), i adaptera za prikaz modela (MVA) itd.

MVP uzorak

Prezentacija modela (MVP)

MVP uzorak postoji već neko vrijeme i varijanta je MVC-a. Dizajniran je posebno za testnu automatizaciju gdje je cilj bio povećati količinu koda koji se može testirati automatizacijom, a obrazac rješava neke probleme s prezentacijskim slojem, izolirajući poslovnu logiku od korisničkog sučelja.

Zaslon je prikaz, podaci koji se prikazuju su Model, a prezentator ih spaja.

MVP obuhvaća sljedeće komponente sa zasebnim odgovornostima:

  • Model (definira podatke koji će se prikazati)
  • Pogled (prikazuje podatke iz modela i usmjerava korisničke zahtjeve za prezentatora).
  • predlagač (interaktivno djeluje između pogleda i modela i spaja ih zajedno)

Pogled (web stranica) prikazuje i upravlja kontrolama stranice prosljeđujući događaje (korisničke zahtjeve) na predlagač koji su pokrenuti u Pogled.

predlagač reagira na ove događaje čitanjem i ažuriranjem Model za promjenu Pogled i prema tome voditelj je odgovornost je vezivanje Model i Pogled.

Nakon što pogleda MVC i MVP obrasci, zajedništvo je obje odvojene odgovornosti za svaku komponentu i promiču razdvajanje između Pogled (UI) i Model (podaci). Značajne razlike između ovih obrazaca više su vidljive u načinu provedbe obrazaca.

MVP može biti složen obrazac za implementaciju naprednih rješenja, ali svakako ima velike koristi ako se primijeni kao dobro osmišljeno rješenje, mada ne mora nužno biti i prikladan izbor za jednostavna rješenja.

MVVM uzorak

Model-View-ViewModel (MVVM)

MVVM uzorak posebno je dizajniran za Windows Presentation Foundation (WPF) i Microsoft Silverlight platforme, a može se koristiti na svima XAML [i] platforme.

WPF je Microsoftov sustav koji prikazuje korisnička sučelja u Windows temeljenim programima i prvi je put objavljen u .NET Framework 3.0.

MVVM bio je rafiniran iz MVC i u ovom obrascu Pogled je aktivan s ponašanjima, događajima i povezivanjem podataka i Pogled sinkronizira se sa ViewModel (koji omogućava odvajanje prezentacije i otkriva metode i naredbe za upravljanje i manipuliranje Model.

MVVM sadrži tri osnovne komponente:

  • Model (predstavlja podatke s provjerom valjanosti i poslovnom logikom)
  • Pogled (Pogled je odgovoran za definiranje strukture, izgleda i izgleda onoga što korisnik vidi na zaslonu. U idealnom slučaju, prikaz je definiran isključivo XAML-om, s ograničenim kodom iza koji ne sadrži poslovnu logiku. vezanje između Pogled i ViewModel za prikaz onemogućavanja sinkronizacije modela i ViewModel s pogledom)
  • ViewModel (odvaja pogled od modela i izlaže metode i naredbe za manipuliranje podacima (model).

Pogled prima podatke od ViewModel (pomoću povezivanja podataka i metoda), a tijekom izvođenja, Pogled mijenjat će se kada reagira na događaje u ViewModel.

ViewModel posreduje između Pogled i Model i rukuje s Pogled logika. Interakcija je sa Model - uzimanje podataka iz Model i predstavljajući je Pogled prikazati.

Sve su ove komponente odvojene jedna od druge, što omogućava veću fleksibilnost neovisnog rada na njima, izoliranje ispitivanja jedinice i zamjenu van, bez utjecaja na bilo koji drugi dio.

Ova struktura dopušta Model i ostalih komponenti razvijaju se nezavisno, omogućujući programerima da istovremeno rade na različitim aspektima rješenja. Na primjer, gdje dizajneri rade na Pogled, jednostavno generiraju uzorke podataka bez potrebe za drugim komponentama. To olakšava lako redizajn korisničkog sučelja kao Pogled se implementira u XAML.

Kao što je prije spomenuto sa MVP, jednostavna rješenja ne trebaju modele arhitekture i dizajna, poput "Hello World!" suviše je osnovno da bi se slijedilo bilo koji obrazac; međutim, kako se uvode više značajki, funkcija i komponenti, složenost aplikacije raste i povećava se količina koda kojom se mora upravljati.

U sažetku

Od početka razvoja korisničkog sučelja, obrasci dizajna postaju sve popularniji kako bi proces razvoja bio lakši, aplikacije skalabilnije i olakšavaju lakše testiranje.

Ilustrirana razlika između MVP i MVVM obrasca:

  • U oba MVP i MVVM, Pogled je mjesto ulaska u aplikaciju
  • U MVP, postoji mapiranje jedan na jedan između Pogled i predlagač, gdje u MVVM, odnos je jedan prema mnogima između Pogled i ViewModel.
  • MVP koristi se prvenstveno za Windows Forms i Windows Phone aplikacije te MVVM je dizajniran za Silverlight, WPF, Knockout / AngularJS, itd.