Differenza tra MVVM e MVP Differenza tra

Anonim

Lo scopo dello sviluppo del software è quello di creare soluzioni che soddisfino esigenze e problemi per utenti e aziende. Per raggiungere questo obiettivo, vengono utilizzate diverse tecnologie e modelli di architettura come Model-View-ViewModel (MVVM) e Model-View-Presenter (MVP) .

Come per tutto ciò che viene prodotto, il primo passo è la fase di progettazione e progettazione. Il processo di progettazione del software può essere una specifica basata sul set di strumenti di tecnologia preferito e può comprendere tutte le attività, dalla concezione alla pianificazione, dall'implementazione, agli aggiornamenti e alle modifiche.

Riguarda la progettazione architettonica di basso livello e di alto livello, basata su modelli di architettura selezionati, e mappa le soluzioni riutilizzabili usando schemi di progettazione.

Struttura dell'applicazione software

L'architettura software definisce la struttura di un'applicazione che soddisfa i requisiti tecnici, operativi e dell'utente e fa riferimento a come il codice è organizzato e gestito.

La decisione sull'architettura di un'applicazione software è fondamentale in quanto non è una parte facile e mutevole di un'applicazione già sviluppata; quindi il modello architettonico deve essere deciso prima che inizi la programmazione.

I pattern architetturali sono in qualche modo diversi rispetto ai pattern di progettazione poiché il loro ambito è molto più ampio affrontando problemi più tecnici come le prestazioni e le limitazioni dell'hardware e l'alta disponibilità. Esempi di diversi modelli di architettura sono MVC, MVVM e MVP.

D'altro canto, i modelli di progettazione sono best practice formalizzate che facilitano lo sviluppo orientato agli oggetti riutilizzabili e sono più facili da gestire e modificare rispetto all'architettura di un'applicazione.

Modelli di architettura

Model View Controller (MVC) è stato uno dei primi modelli architettonici sviluppati per le applicazioni Web, guadagnando popolarità dalla metà alla fine degli anni Novanta, in particolare con la comunità Java.

I framework più recenti, come Django per Python e Rails (Ruby on Rails), si concentrano molto sulla distribuzione rapida, motivo per cui MVC sta conquistando la quota di mercato come grande attrazione per i modelli architettonici.

Tradizionalmente, lo sviluppo dell'interfaccia utente conteneva un sacco di codice per gestire la logica complicata, quindi i pattern di architettura sono stati progettati per ridurre il codice a livello dell'interfaccia utente (UI), rendendolo più "pulito" e gestibile.

Quindi, con il pattern MVC, un'applicazione web è composta da

  • Modello (dati)
  • Visualizza (interfaccia per visualizzare e manipolare i dati)
  • Controller (operazioni e azioni eseguite sui dati)

Il Modello gestisce i dati e la logica aziendale e ci sono non dipendenze tra Modello e Controller < o Visualizza . La

Visualizza presenta i dati all'utente nel formato supportato e nel layout richiesto, e quando il Controller riceve le richieste dell'utente (per recuperare i dati), richiama le risorse necessarie necessarie per completare la richiesta. Applichiamo questo modello alla costruzione di un negozio di libri online.

Gli utenti possono cercare, visualizzare, registrare e acquistare libri, nonché gestire i propri profili e elenchi di libri. Quando un utente fa clic sulla categoria SCI-FI, tutti i libri correlati devono essere visualizzati come disponibili.

I

Controller gestiscono le azioni che gestiscono i libri (elenco, aggiunta, vista, ecc.). Possono esserci più Controller con un regolatore principale 'che dirige il traffico'. Per questo esempio, il

Controller è denominato controller_books. php e il modello (ad esempio model_books.php) gestisce i dati e la logica relativi ai libri. Infine, saranno necessarie diverse

visualizzazioni, come quando si aggiungono libri al carrello online o quando si visualizzano i dettagli del libro con immagini e recensioni. I

controller_books. php riceve l'azione (richiesta dell'utente) dal regolatore principale (ad esempio indice. php ). I controller_books. php analizza la richiesta e chiama i model_books. php (i dati) per restituire l'elenco dei libri SCI-FI. La responsabilità del

Modello è quella di fornire quell'informazione, usando qualsiasi logica applicata (usando i filtri di ricerca). Il Controller quindi prende le informazioni e le passa alla relativa Visualizza (vista di ricerca, visualizzazione di stampa, vista di dettaglio, ecc.) E le informazioni sono presentate (tramite Visualizza >) per l'utente che ha avviato la richiesta. Questo è il fondamento del pattern MVC, che ha evoluto le variazioni di spawn dei modelli di architettura, come Model-View-Presenter (MVP), Model-View-ViewModel (MVVM), Hierarchical-Model-View-Controller (HMVC) e Model-View-Adapter (MVA), ecc. Pattern MVP

Model-View-Presenter (MVP)

Il pattern

MVP

è in circolazione da un po 'di tempo è una variante di MVC. È stato progettato specificamente per l'automazione dei test in cui l'obiettivo era aumentare la quantità di codice che è possibile testare attraverso l'automazione e il pattern affronta alcuni problemi con il livello di presentazione, isolando la logica di business dall'interfaccia utente. Lo schermo è la Vista, i dati visualizzati sono il Modello e il Presenter aggancia i due insieme. MVP

comprende i seguenti componenti con responsabilità separate:

Modello (definisce i dati da visualizzare)

  • Visualizza (visualizza i dati dal modello e inoltra le richieste dell'utente al Presentatore).
  • Presenter (interagisce tra la vista e il modello e li unisce)
  • La Visualizza

(una pagina Web) visualizza e gestisce i controlli della pagina inoltrando gli eventi (richieste dell'utente) al Presenter inizializzati nella Visualizza . Il Presentatore

risponde a questi eventi leggendo e aggiornando il Modello per cambiare la Visualizza e quindi, la Responsabilità del è per associare Modello e Visualizza . Dopo aver esaminato i modelli MVC

e MVP , la comunanza ha entrambi responsabilità separate per ciascun componente e promuove la separazione tra Visualizza (UI) e Modello (i dati). Differenze significative tra questi modelli sono più evidenti nel modo in cui i modelli sono implementati. MVP potrebbe essere un modello complesso da implementare per soluzioni avanzate, ma sicuramente ha grandi vantaggi se implementato come soluzione ben progettata, anche se potrebbe non essere necessariamente la scelta appropriata per soluzioni semplici.

Pattern MVVM Model-View-ViewModel (MVVM)

Il

MVVM

schema è stato progettato specificamente per Windows Presentation Foundation (WPF) e Microsoft Silverlight, e può essere utilizzato su tutte le piattaforme XAML [i] . WPF è un sistema Microsoft che esegue il rendering di interfacce utente in programmi basati su Windows ed è stato rilasciato per la prima volta in. NET Framework 3. 0. MVVM

è stato perfezionato da

MVC e in questo modello, la Visualizza è attiva con comportamenti, eventi e associazione dati e la Visualizza si sincronizza con ViewModel (che abilita la separazione della presentazione e espone i metodi e comandi per gestire e manipolare il Modello . MVVM comprende tre componenti principali:

Modello (rappresenta i dati con convalida e logica aziendale)

  • Visualizza > (La vista è responsabile della definizione della struttura, del layout e dell'aspetto di ciò che l'utente vede sullo schermo. Idealmente, la vista è definita puramente con XAML, con un code-behind limitato che non contiene logica aziendale. -legando tra Visualizza
  • e Visualizza modello per visualizzare gli oggetti che sincronizzano il modello e il ViewModel con la vista) Visualizza modello (separa la vista da Modello e espone metodi e comandi per manipolare i dati (Modello). La
  • Visualizza riceve i dati dal

ViewModel (tramite associazione dati e metodi), e in fase di runtime, la Visualizza cambierà quando si risponde agli eventi in la ViewModel . Il ViewModel media tra

Visualizza e Modello e gestisce la logica Visualizza . Interagisce con il Modello - acquisendo i dati dal Modello e presentandolo alla Visualizza da visualizzare. Questi componenti sono tutti disaccoppiati l'uno dall'altro consentendo una maggiore flessibilità per lavorare su di essi in modo indipendente, isolare i test di unità e scambiarli, senza influire su nessun altro componente. Questa struttura consente al Modello

e ad altri componenti di evolvere in modo indipendente, consentendo agli sviluppatori di lavorare contemporaneamente su diversi aspetti della soluzione. Ad esempio, dove i progettisti lavorano sulla

Visualizza , generano semplicemente campioni di dati senza bisogno di accedere agli altri componenti. Ciò semplifica la riprogettazione dell'interfaccia utente poiché la Visualizza è implementata in XAML. Come accennato prima con MVP , le soluzioni semplici non avrebbero bisogno di schemi di architettura e design, come "Hello World!"È troppo semplice per seguire qualsiasi schema; tuttavia, man mano che vengono introdotte più funzionalità, funzioni e componenti, la complessità dell'applicazione aumenta e aumenta anche la quantità di codice che deve essere gestita.

In sintesi Dall'inizio dello sviluppo dell'interfaccia utente, i modelli di progettazione stanno diventando sempre più popolari per semplificare il processo di sviluppo, le applicazioni sono più scalabili e facilitano test più semplici. Differenza illustrata tra i modelli MVP e MVVM:

In entrambi

MVP

e

  • MVVM , la Visualizza è il punto di accesso all'applicazione > In MVP , esiste una corrispondenza uno-a-uno tra Visualizza
  • e Presentatore , dove in MVVM , la relazione è una -a-molti tra Visualizza e Visualizza modello . MVP viene utilizzato principalmente per Windows Form e applicazioni Windows Phone e MVVM è progettato per Silverlight, WPF, Knockout / AngularJS, ecc.