Qual o nome de arquitetura correta para esse projeto?

04/10/2018

5

A princípio, era MVC, mas aí dentro da pasta Models coloquei uma subpasta com classes ViewModels? O nome muda de MVC para outro nome? Qual seria o nome correto?
Responder

Post mais votado

04/10/2018

Continua sendo MVC!
Os ViewModels fazem parte dao MVC tanto quanto os Models. Apenas definem modelos que são exclusivos para renderização de Views. Nesse caso apenas funcionam como um "helper" para a View acessar facilmente dados agregados necessários a mesma.
É um conceito comum de se encontrar em MVP, MVC e MVVM (talvez em muitas outros padrões de design), mas ele não descaracteriza nenhum deles, apenas complementa.
Lembrando que existe a eterna discussão sobre MVC ser arquitetura ou padrão de design (acredito ser ambos, dependendo a implementação geral, onde pode ser apenas um padrão de design se usado em combinação com DDD, por exemplo).
Responder

Mais Posts

04/10/2018

Cesar Murilo

Agradeço a resposta. É para um projeto da faculdade. O professor pediu que eu desenhasse o diagrama, eu fiz conforme disponível no link abaixo (desenhado no draw.io), se puder ver e me dizer se precisa corrigir:

https://drive.google.com/file/d/1UlQcDe3Yv-idkxuesM7H7iE0CxBxB96G/view?usp=sharing

Mesmo que o diagrama seja assim e funcione assim, então continua sendo MVC, correto?
Responder
Os ViewModels geralmente não são detalhados a fundo em diagramas, sendo apenas um facilitador para que a View não receba dados desnecessários para seu uso, evitando que ela tenha sobrecarga de dados. Não tem problema em aparecer ou não no seu diagrama, e mesmo aparecendo continua podendo ser MVC ou MVVM/MVP.

Tentando explicar de forma simples, a diferença entre o ViewModel no MVC e no MVVM é:
-> No MVC ele contém todos os dados necessários para a renderização da View, sendo criado com base em um Model.O fluxo é: dados entram através da View (usuário enviando uma resposta num fórum, por exemplo), esse dado vai para o Controller, que por sua vez manipula o Model (insere a pergunta no banco de dados), e constrói um ViewModel novo (conténdo a resposta já inserida) e renderiza a View.

-> No MVVM ele funciona do mesmo modo que no MVC, mas adiciona possibilidades da View manipular o Model (databinding), refletindo diretamente alterações da View para o Model, sem intermédio do controle.

É um assunto bem complicado, mas em resumo, você pode analisar se o seu ViewModel não faz nada mais do que conter propriedades que existem no Model e nunca altera nada, apenas são para leitura. Nesse caso é MVC. Já se alterar algum dado através do ViewModel, é MVVM.
Responder