Esiste un semplice riferimento passo-passo a MVVM?
Si C'è. Dai un'occhiata a qui.
MVVM è un super-set o un sotto-set di MVC?
MVVM appartiene alla famiglia MVC, quindi, se puoi dirlo, è un sottoinsieme. È una variante per separare l'interfaccia utente dalla logica aziendale sottostante. Lo descriverei come un fratello di MVC. Sin dai primi giorni di OOP, le persone hanno cercato modi per separare l'interfaccia utente dalla loro logica. MVC è stato il primo archetipo che si è evoluto. È piuttosto semplice, anche se la maggior parte delle persone non capisce bene. La vista è solo un osservatore del modello e lo chiama quando necessario. Il controller è solo una strategia per consentire alla vista di comunicare con il modello, ad esempio quando è necessario un comportamento intercambiabile (ad esempio ReadonlyController, AdminController). MVC ha molto successo ed è davvero una buona pratica applicarlo.
MVVM è un tipo specializzato di pattern MVP, come descritto da Martin Fowler . MVP cerca di mantenere la vista il più stupida possibile (pur mantenendo l'input dell'utente ecc.), Migliorando così la testabilità. Mira a un'astrazione della vista e della logica di interazione che deve essere inserita nel presentatore. Il relatore comunica esclusivamente con il modello / la logica aziendale e aggiorna la vista. Martin Fowler descrive MVVM praticamente nel suo modello di modello di presentazione.
La vista è completamente astratta in un ViewModel. Quando ha View
bisogno di una proprietà, anche quella ViewModel
deve averla. (ViewModel) è pensato per essere completamente indipendente dalla tecnologia UI sottostante, un'astrazione. Per comunicare tra View e ViewModel, è necessario utilizzare un modello di sincronizzazione (ad esempio Observer). Questo non è facile da realizzare in un ambiente web senza stato. MVVM differisce da MVP, poiché View non si lega più al modello / logica aziendale ma a un ViewModel.
Quale modello è moderno e quale dovrei scegliere per le versioni Windows e Web della mia applicazione?
Il modello di presentazione (simile a MVVM) in teoria dovrebbe essere completamente indipendente dalla tecnologia UI in uso. Tuttavia, l'aspetto della sincronizzazione deve essere coperto. Può essere fatto facilmente legando a Comandi e Proprietà con WPF, dove la colla di sincronizzazione è già presente. Con ASP.NET, questa è una storia diversa. Tuttavia, c'è un articolo su CodeProject che utilizza il modello di modello di presentazione con tutte le tecnologie dell'interfaccia utente di Windows. Dare un'occhiata.