/ / Qual è la differenza tra ViewModel e Controller in ASP MVC - asp.net-mvc, wpf, silverlight, mvvm

Qual è la differenza tra un ViewModel e Controller in ASP MVC - asp.net-mvc, wpf, silverlight, mvvm

Quali sono le responsabilità dell'uno contro l'altro? Che tipo di logica dovrebbe andare in uno contro l'altro? Quale colpisce servizi e database? Come decido se il mio codice dovrebbe andare nel viewmodel o nel controller?

per la cronaca, sto usando asp mvc

risposte:

3 per risposta № 1

Non è raro combinare controller con ViewModels: in uno scenario di questo tipo è possibile assegnare le seguenti responsabilità ai ruoli:

ViewModel rappresenta lo stato e il comportamento della presentazione.

controllore è responsabile per il flusso di lavoro dell'applicazione. Inoltre, media tra i ViewModels. Quindi promuove l'accoppiamento lento mantenendo i ViewModels dal riferirsi l'uno all'altro in modo esplicito.

Ulteriori informazioni su questi ruoli: collegamento


2 per risposta № 2

Bene, MVVM è davvero un modello di progettazione specifico per WPF e Silverlight. In particolare, si basa e richiede le capacità di associazione di dati, comando e modello di queste tecnologie.

Se si utilizza ASP.NET MVC, MVVM non è un'architettura applicabile. Esso, per definizione, è costruito attorno a Model-View-Controller (quindi ASP.NET MVC) e utilizza questo modello di progettazione architettonica.


1 per risposta № 3

Sono d'accordo con Reed, anche se su Hanselminutesrecentemente Phil Haak ha parlato di asp.net MVC 2 e ha fatto più riferimenti a "ViewModel" - quindi ho dedotto che le VM possono essere create anche se stai usando MVC

Inoltre, penso sempre che un'app MVVM tragga beneficio da almeno una VM che contiene problemi a livello di applicazione, come la navigazione, che ritengo più un Controller che un ViewModel ...


0 per risposta № 4

Sono d'accordo con entrambi, ma mi piace aggiungereun altro pattern MVP (Model View Presenter) che è più adatto per ASP.Net e Windows ma che non può essere utilizzato per WPF e Silverlight MVVM è appositamente progettato per le applicazioni WPF e Silverlight.