2010-09-16 13 views
9

Non voglio memorizzare le classi del mio modello di dominio nello stesso assembly della mia piattaforma web. La cartella Modelli nella struttura del progetto è quindi inutile per me. Ho appena terminato il Tutorial di Music Store e ho notato come creano una cartella "ViewModels" che ha molto senso per me.Da MVC a MVVM

Ha senso trattare la cartella Models come una cartella ViewModels? Molte persone fanno questo? Esiste un modello come MVVM?

risposta

15

Un modello di vista è qualcosa per aggiungere un altro livello di astrazione nel caso in cui non ti fidi completamente del tuo codice di presentazione (o semplicemente trovi questo tipo di incapsulamento più elegante).

vale a dire, se la classe Person ha un metodo Delete o una proprietà SSNumber, si potrebbe desiderare di non passare questo oggetto per una vista, come questo, concettualmente, le consente di chiamare Eliminare o visualizzare lo SSN, che si deve non essere capace di.
Per evitare questa situazione, si crea un'altra classe, PersonViewModel, che contiene solo informazioni/metodi sicuri da chiamare da una vista.

Questo ha poco a che fare con l'uscita dalla logica del modello di un'applicazione MVC. È possibile creare un progetto separato per il proprio modello e fare riferimento alla propria applicazione Web indipendentemente dal fatto che si utilizzi l'incapsulamento ViewModel. Ciò è incoraggiato dai libri che ho letto finora.

5

penso si fa riferimento al modello MVVM (Model-View-ViewModel)

Non c'è una cosa simile come MVVC.

4

Il modello di dominio è progettato in termini di logica aziendale e astrazione aziendale, è mirato a risolvere problemi di business magari utilizzando tecniche orientate agli oggetti, il risultato è un modello di dominio con entità e oggetti di valore si richiamano e interagiscono con gli altri per raggiungere gli obiettivi della logica di business.

La presentazione invece ha una prospettiva diversa, per lo più è necessario appiattire gli oggetti del dominio per rendere più semplice il binding, inoltre potrebbe non essere interessato ad alcuni attributi e proprietà delle entità del modello di dominio nel livello di presentazione, quindi il modello di presentazione (Visualizza modello) è una maggiore personalizzazione del modello a scopo di visualizzazione, la struttura potrebbe essere diversa, è possibile rimuovere alcuni campi non necessari per la presenazione e aggiungere alcuni campi solo per scopi di presentazione (come "IsIdEnabled" o SliderWidth, ...)

0

Come Dx_ indicato sopra, non esiste una cosa come MVVC.

Ma, questo bel discorso descrive molto bene MVVM: Deep Dive MVVM