/ / Qual é a diferença entre um ViewModel e um controlador no ASP MVC - asp.net-mvc, wpf, silverlight, mvvm

Qual é a diferença entre um ViewModel e um controlador no ASP MVC - asp.net-mvc, wpf, silverlight, mvvm

Quais são as responsabilidades de um contra o outro? Que tipo de lógica deve estar em um contra o outro? Qual deles atinge serviços e bancos de dados? Como decido se meu código deve ir no viewmodel ou no controlador?

para o registro, eu estou usando asp mvc

Respostas:

3 para resposta № 1

Não é incomum misturar Controladores com ViewModels. Nesse cenário, você pode atribuir as seguintes responsabilidades às funções:

ViewModel representa o estado e o comportamento da apresentação.

Controlador é responsável pelo fluxo de trabalho do aplicativo. Além disso, ele medeia entre os ViewModels. Portanto, promove um acoplamento flexível, impedindo que os ViewModels se refiram explicitamente.

Mais informações sobre essas funções: Ligação


2 para resposta № 2

Bem, o MVVM é realmente um padrão de design específico para WPF e Silverlight. Baseia-se e requer especificamente os recursos de ligação, comando e modelagem de dados dessas tecnologias.

Se você estiver usando o ASP.NET MVC, o MVVM não é uma arquitetura aplicável. Ele, por definição, é construído em torno do Model-View-Controller (daí o ASP.NET MVC) e usa esse padrão de design arquitetônico.


1 para resposta № 3

Eu concordo com Reed, no entanto, em Hanselminutesrecentemente, Phil Haak falou sobre o asp.net MVC 2 e fez várias referências ao "ViewModel" - então deduzi que as VMs podem ser criadas, mesmo se você estiver usando o MVC

Além disso - sempre acho que um aplicativo MVVM se beneficia de pelo menos uma VM que contém preocupações em todo o aplicativo, como navegação, que considero mais um Controlador do que um ViewModel ...


0 para a resposta № 4

Estou de acordo com os dois, mas gostaria de adicionaroutro padrão MVP (Model View Presenter), que é mais adequado para o formato ASP.Net e Windows, mas não pode ser usado para WPF e Silverlight. O MVVM é projetado especialmente para aplicativos WPF e Silverlight.