Il concetto di ViewModel esisteva prima di MVVM?

7

Oggi stavo discutendo con un collega che ViewModel era un concetto generale ed esisteva prima del pattern MVVM.

Credo che il termine ViewModel sia usato ogni volta che crei una classe con proprietà Model like per la visualizzazione su View che supporta l'associazione dati come in ASP.NET e persino in WinForms.

È vero il contrario? Microsoft lo ha chiamato per la prima volta con MVVM?

    
posta Muhammad Hasan Khan 14.10.2011 - 18:17
fonte

3 risposte

4

MVVM è una specializzazione del modello Modello di presentazione di Martin Fowler. Il pattern Modello di presentazione è indipendente dalla piattaforma e MVVM è stato creato per sfruttare le funzionalità di WPF (e in seguito di Silverlight).

Il modello di presentazione è stato pubblicato nel 2004 e MVVM è stato presentato per la prima volta in blog pubblicazione nel 2005 di John Grossman.

    
risposta data 14.10.2011 - 19:55
fonte
8

MVP, MVC, MVVM, è tutto MOLTO simile. La differenza è principalmente nel punto esatto in cui accadono certe cose, e esattamente con quale livello l'utente interagisce:

Client spesso / Smart Client - Le classi View sono l '"oggetto dio". Il codice immediatamente dietro l'interfaccia utente visualizzata sa tutto ciò di cui ha bisogno per svolgere il proprio lavoro, inclusa la conoscenza del dominio, possibilmente il DAL (se non si utilizza Active Record) e la maggior parte delle regole relative alla convalida dei dati. La maggior parte delle app WinForms usa questa architettura, e anche molte app "vanilla ASP.NET" hanno uno strato molto spesso proprio contro il generatore HTML di ASP che gestisce la maggior parte di questo.

MVC - Il controller è "l'oggetto dio". È l'oggetto più direttamente interfacciato dall'utente, e genera o aggiorna un livello di presentazione estremamente "stupido" (View) basato sulla logica di business che gli fornisce la conoscenza del Modello. Il Modello può contenere una logica di business superiore o può riguardare solo l'integrità dei dati. Il miglior esempio che riesco a pensare è nei videogiochi; l'utente vede uno schermo video con l'azione in corso, ma per la maggior parte non funziona direttamente con quella vista per fare qualcosa. Invece c'è un HID nelle sue mani, e quando lo usa, i segnali vengono inviati alla logica all'interno della Console che incorporano quei dati e aggiornano lo schermo. Qualcuno potrebbe obiettare che qualsiasi app che usa un mouse o una tastiera è MVC con questa definizione, ma lo contatteremo dal concetto del livello superiore dell'applicazione (e non dal sistema operativo su cui risiede), ovunque ci sia un cursore o un puntatore che è il bersaglio diretto dell'input tramite un HID, ovvero una rappresentazione astratta della mano dell'utente che interagisce con gli elementi dell'interfaccia utente.

MVP - Il controller di MVC viene sostituito con un Presenter meno potente e più per uso singolo. Il Presenter funge comunque da intermediario tra Visualizza e Modello, ma la Vista spesso acquisisce alcune responsabilità, come la gestione degli eventi dell'interfaccia utente. Il Presentatore agisce per fornire alla Vista i dati necessari dal Modello in modo facile da assorbire; o DTO o proprietà associabili. Questa architettura consente la separazione delle preoccupazioni nelle app GUI rispetto all'architettura Spessa / Smart Client, consentendo al tempo stesso all'interfaccia utente di essere il livello con cui l'utente interagisce concettualmente e può essere realizzato con la maggior parte delle lingue / architetture.

MVVM - Il Presentatore recupera alcune responsabilità dalla Vista e diventa una "fonte di associazione" per la Vista. La vista fornisce solo la logica di base, basandosi invece sui "punti di legame" disponibili su ViewModel. Tutta la vista sa come fare è ottenere e impostare le informazioni fornite da "binding di dati" e invocare la logica esposta attraverso "binding di eventi". MVVM come termine è stato coniato da Microsoft per descrivere Windows Presentation Foundation, in cui la vista è strutturata in base ai file di markup XAML a cui viene assegnata la logica tramite collegamenti definibili alla classe ViewModel.

    
risposta data 14.10.2011 - 21:59
fonte
1

Generalmente MVVM è una derivazione del modello di presentazione.

C'è un riferimento a un Visualizza modello dall'ingegneria dei sistemi, e direi che sono correlati, ma è non è la stessa cosa Nel modello di vista di ingegneria dei sistemi, è un modello di tutti i diversi punti di vista. ViewModel in MVVM è più simile a un modello di un punto di vista .

Ho trovato questo framework MVVM di ASP.NET dal 2009. Tuttavia, continuo a pensare che sia stato influenzato dal MVVM di WPF.

Non riesco a trovare riferimenti a ViewModel nella roba di ASP.NET precedente a questo. Non escluderei comunque.

    
risposta data 14.10.2011 - 18:32
fonte

Leggi altre domande sui tag