2010-09-17 19 views
7

MVVM es un patrón de diseño de Microsoft que existía antes de ASP.Net MVC. ¿Alguien puede entender las diferencias entre MVVM y el nuevo patrón MVC?ASP.Net MVC y MVVM

+3

MVC (que se puede utilizar fuera de la última implementación de ASP.NET MVC * *) es anterior a MVVM por mucho, mucho tiempo ... Ver: http://en.wikipedia.org/wiki/Model-view-controller –

+1

Editado para indicar específicamente que es Microsoft ASP.Net MVC.Sé que MVC es anterior a MVVM, pero ASP.Net MVC es un sucesor de MVVM a pesar de que MVVM se basa en MVC. –

Respuesta

13

¿Alguien puede arrojar luz sobre las diferencias entre MVVM y el nuevo patrón MVC ?.

Sí: Al utilizar ASP.NET MVC, el patrón MVC usa el controlador para representar el modelo directamente en la vista. Esto es perfectamente aceptable para proyectos triviales con una pequeña cantidad de objetos. Donde esto puede convertirse en un problema es que las preocupaciones de la capa de UI pueden llegar al modelo subyacente (dominio).

Al usar MVVM, entonces está agregando una abstracción entre el Modelo y la Vista, que es por supuesto el ViewModel. Esto le permite al autor proyectar en la vista un objeto que la vista consume más fácilmente. ViewModel puede contener elementos que estarían fuera de lugar en el modelo (de dominio). El costo asociado aquí es que necesita tener una lógica de mapeo que transponga los datos del modelo al Modelo de Vista. Herramientas como AutoMapper pueden ayudar con esta tarea.

Un ejemplo simple de esto podría ser que el Modelo no requiere ciertos campos según sea necesario, pero una vista en particular sí. En lugar de combinar esta lógica en la interfaz de usuario, si está conectada al ViewModel, otras UI pueden consumir la misma máquina virtual sin tener que duplicar la lógica que se horneó en la primera interfaz de usuario.

2

Me atrevo a sugerir que MVVM es el patrón de diseño de Microsoft y ASP.NET MVC, que es muy reciente, es una implementación específica de Microsoft (que no se adhiere necesariamente a MVC o MVVM, pero es similar). Y según lo sugerido por Reed, MVC ha existido desde los años 70.

1

Ambos MVC & MVVM son patrones arquitectónicos. MVC tiene sus raíces en Smalltalk. ASP.NET MVC es la implementación de Microsoft del patrón MVC utilizando el marco ASP.NET.

Ambos patrones se ocupan de la separación de preocupaciones. MVC tiene más que ver con la interacción de varias capas comúnmente utilizadas en una aplicación como Modelo (capa de datos), Vista (capa de presentación) y Controlador (capa de lógica de negocios).

Con capacidades avanzadas de enlace de datos de WPF y Silverlight, MVVM fue más adecuado y publicitado como el próximo gran acontecimiento. Martin Fowler generalizó estos patrones como patrones de presentación en su libro Enterprise Architecture Architecture.

Una de las ventajas que veo al usar un ViewModel es que le permite probar mejor el código de la aplicación usando pruebas unitarias. Por esta razón, creo que MVVM o al menos el bit de ViewModel también se usa con bastante frecuencia en las aplicaciones ASP.NET MVC.

+0

Sí ViewModel también existe en ASP.Net MVC. ¿No podemos integrar las mismas capacidades avanzadas de Silverlight con la capa de presentación en MVC ?. Me preguntaba cómo un outweight es el otro en el desarrollo de aplicaciones web. –

4

MVC y MVVM son bastante diferentes. Parece que hay un poco de incomprensión de MVVM cuando se habla con ASP MVC. La práctica de hacer 'Ver Modelos' en MVC, que son clases específicas para alimentar vistas, mientras que las buenas prácticas no son fieles al espíritu de MVVM, y de hecho es solo una versión más limpia de MVC.

MVVM es más adecuado para el escritorio que utiliza WPF o similar, o simplemente en el navegador utilizando un marco de JavaScript como knockout.js. El patrón es bastante diferente de MVC e implica que las vistas estén 'suscritas' al modelo.