patron net mvc modelo entre diferencia asp.net-mvc architecture viewmodel mvvm

modelo - ASP.NET MVC, Model y ViewModel ¿separación de preocupaciones?



mvc mvp mvvm (1)

Últimamente, he estado explorando cuál es la mejor manera de organizar la capa de presentación de la aplicación ASP.NET MVC cuando el Modelo subyacente es complejo. Lo que surgió hasta ahora es la arquitectura MVVM con sus objetos ViewModel. Sin embargo, no estoy seguro de cuáles son las mejores prácticas cuando este tipo de arquitectura está en el caso.

  • ¿Los objetos ViewModel pueden contener objetos Model?
  • Si se usó MVVM, ¿es aconsejable que los objetos Model se usen en Views?
  • ¿Dónde debería implementarse la validación en las clases ViewModel o Model?
  • ¿La capa empresarial (capa de servicio) debe conocer ViewModel y quién es responsable de la asignación entre ViewModel y Model?

  • La mayoría de las veces, los objetos ModelView son solo contenedores que contienen objetos Model cuando necesitamos enviar varios tipos de ellos, o cuando necesitamos pasar un par de propiedades más que solo son necesarias en Views.
  • Si el trabajo de View es mostrar los detalles de un Modelo y no hay nada más que pasar a View, ¿por qué no?
  • Depende Puede usar sus clases ModelView y Model solo para transportar datos entre capas. Y cuide de la validación a través de carpetas de modelo de corte o con una capa de servicio.
  • No hay ninguna razón por la que no deberían saber sobre ModelViews. Pero generalmente solo obtiene los Modelos solicitados de la capa de servicio del controlador y luego los pasa / directamente o en un ModelView a la Vista.

Por cierto, no consideraría ModelViews como una arquitectura. Es más como "usa uno cuando lo necesites". Después de todo, no tiene sentido hacer esto para pasar datos a la vista:

class SomeModelView { public MyModel model { get; set; } }

Simplemente pase el MyModel si eso es suficiente para que la vista haga su trabajo.