¿Existía el concepto de ViewModel antes de MVVM?

7

Hoy estuve discutiendo con un colega que ViewModel es un concepto general y existía antes del patrón MVVM.

Creo que el término ViewModel se usa cada vez que creas una clase con propiedades similares al modelo para mostrar en la vista que admite el enlace de datos como en ASP.NET e incluso en WinForms.

¿Es todo lo contrario? ¿Microsoft la nombró la primera vez con MVVM?

    
pregunta Muhammad Hasan Khan 14.10.2011 - 18:17

3 respuestas

4

El MVVM es una especialización del patrón Presentation Model de Martin Fowler. El modelo de modelo de presentación es independiente de la plataforma y MVVM se creó para aprovechar las capacidades de WPF (y más adelante en Silverlight).

El modelo de presentación se publicó en 2004 y MVVM se presentó por primera vez en el blog publicación en 2005 por John Grossman.

    
respondido por el Christian P 14.10.2011 - 19:55
8

MVP, MVC, MVVM, todo es MUY similar. La diferencia radica principalmente en dónde suceden ciertas cosas y exactamente con qué capa interactúa el usuario:

Thick Client / Smart Client - Las clases de Vista son el "objeto de dios". El código inmediatamente detrás de la interfaz de usuario mostrada sabe todo lo que necesita para realizar su trabajo, incluido tener conocimiento del dominio, posiblemente el DAL (si no se utiliza el registro activo) y la mayoría de las reglas relacionadas con la validación de datos. La mayoría de las aplicaciones de WinForms utilizan esta arquitectura, e incluso muchas aplicaciones "vanilla ASP.NET" tienen una capa muy gruesa contra el generador de HTML de ASP que maneja la mayor parte de esto.

MVC - El controlador es el "objeto de dios". Es el objeto con el que el usuario interactúa más directamente, y genera o actualiza una capa de presentación (vista) extremadamente "tonta" basada en la lógica empresarial que le da conocimiento sobre el modelo. El modelo puede contener una lógica de negocios más alta o puede estar relacionado solo con la integridad de los datos. El mejor ejemplo que se me ocurre es en los videojuegos; el usuario ve una pantalla de video con la acción sucediendo, pero en su mayor parte no funciona directamente con esa Vista para hacer algo. En cambio, hay un HID en sus manos, y cuando lo usa, las señales se envían a la lógica dentro de la Consola que incorpora esos datos y actualiza la pantalla. Algunos pueden argumentar que cualquier aplicación que use un mouse o un teclado es MVC según esta definición, pero contrarrestaría eso desde el concepto de la capa superior de la aplicación (y no el sistema operativo en el que reside), donde sea que haya un cursor o puntero que es el objetivo directo de la entrada a través de un HID, que es una representación abstracta de la propia mano del usuario que interactúa con los elementos de la interfaz de usuario.

MVP: el Controlador de MVC se reemplaza por un Presenter menos potente y más único. El presentador sigue actuando como intermediario entre la vista y el modelo, pero la vista a menudo adquiere algunas responsabilidades, como el manejo de eventos de IU. El Presentador actúa para proporcionar a la Vista los datos necesarios del Modelo de una manera fácil de absorber; DTOs o propiedades enlazables. Esta arquitectura permite separar las preocupaciones de las aplicaciones GUI frente a la arquitectura Thick / Smart Client, a la vez que permite que la interfaz de usuario sea la capa con la que el usuario interactúa conceptualmente, y se puede lograr con la mayoría de los idiomas / arquitecturas.

MVVM: el presentador recupera algo de responsabilidad de la vista y se convierte en una "fuente de enlace" para la vista. La vista proporciona solo la lógica más básica, confiando en cambio en los "puntos de enlace" disponibles en ViewModel. Todo lo que sabe View es hacer y establecer la información proporcionada por los "enlaces de datos", e invocar la lógica expuesta a través de los "enlaces de eventos". Microsoft acuñó MVVM como un término para describir Windows Presentation Foundation, en el que View se estructura en función de los archivos de marcado XAML a los que se les asigna lógica mediante enlaces definibles a la clase ViewModel.

    
respondido por el KeithS 14.10.2011 - 21:59
1

Se acepta generalmente que MVVM es una derivación del Modelo de presentación.

Hay una referencia a un Ver modelo de ingeniería de sistemas, y diría que están relacionados, pero es no es lo mismo En el modelo de vista de ingeniería de sistemas, es un modelo de todos los diferentes puntos de vista. El ViewModel en MVVM es más como un modelo de un punto de vista .

Encontré este ASP.NET MVVM framework de 2009. Sin embargo, todavía creo que eso fue influenciado por MVVM de WPF.

Parece que no puedo encontrar referencias a ViewModel en ASP.NET cosas anteriores a eso. Aunque no lo descartaría.

    
respondido por el Scott Whitlock 14.10.2011 - 18:32

Lea otras preguntas en las etiquetas