Modelo–vista–vistamodelo

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

Modelo-vista-modelo de vista (MVVM) es un patrón arquitectónico en software que facilita la separación del desarrollo de una interfaz gráfica de usuario (GUI; la vista) —ya sea mediante un lenguaje de marcado o código GUI— del desarrollo de la lógica de negocio o la lógica de back-end (el modelo), de modo que la vista no dependa de ninguna plataforma de modelo específica.

El modelo de vista de MVVM es un convertidor de valores, lo que significa que se encarga de exponer (convertir) los objetos de datos del modelo para que puedan gestionarse y presentarse fácilmente. En este sentido, el modelo de vista es más un modelo que una vista y gestiona la mayor parte (si no toda) de la lógica de visualización de la vista. El modelo de vista puede implementar un patrón mediador, organizando el acceso a la lógica del backend en torno al conjunto de casos de uso que admite la vista.MVVM es una variación del patrón de diseño Presentation Model de Martin Fowler. Fue inventado por los arquitectos de Microsoft, Ken Cooper y Ted Peters, específicamente para simplificar la programación basada en eventos de interfaces de usuario. El patrón se incorporó a Windows Presentation Foundation (WPF) (el sistema de gráficos .NET de Microsoft) y a Silverlight, la aplicación de Internet derivada de WPF. John Gossman, arquitecto de Microsoft WPF y Silverlight, anunció MVVM en su blog en 2005.El modelo-vista-modelo de vista también se conoce como modelo-vista-vinculador, especialmente en implementaciones que no involucran la plataforma .NET. ZK, un framework de aplicaciones web escrito en Java, y la biblioteca de JavaScript KnockoutJS utilizan el modelo-vista-vinculador.

Componentes del patrón MVVM

Modelo
Modelo se refiere a un modelo de dominio, que representa el contenido de estado real (un enfoque orientado hacia objetos), o a la capa de acceso a datos, que representa el contenido (un enfoque centrado en datos).
Ver
Como en los patrones modelo–vista–controlador (MVC) y modelo–presentante (MVP) vista es la estructura, el diseño y la apariencia de lo que un usuario ve en la pantalla. Muestra una representación del modelo y recibe la interacción del usuario con la vista (clices de ratón, entrada de teclado, gestos de pantalla del grifo, etc.), y reenvía el manejo de estos al modelo de vista a través de la unión de datos (propiedades, callbacks de eventos, etc.) que se define para vincular el modelo de vista y vista.
Ver modelo
El modelo es una abstracción de la vista que expone propiedades y comandos públicos. En lugar del controlador del patrón MVC, o el presentador del patrón MVP, MVVM tiene un Binder, que automatiza la comunicación entre la vista y sus propiedades ligadas en el modelo de vista. El modelo de visión se ha descrito como un estado de los datos del modelo.
La principal diferencia entre el modelo de vista y el Presenter en el patrón MVP es que el presentador tiene una referencia a una vista, mientras que el modelo de vista no. En cambio, una vista se une directamente a las propiedades del modelo de vista para enviar y recibir actualizaciones. Para funcionar eficientemente, esto requiere una tecnología vinculante o generar código de caldera para hacer la unión.
En el marco de la programación orientada al objeto, el modelo de visión puede denominarse a veces objeto de transferencia de datos.
Binder
Los datos declarados y la unión de comandos son implícitos en el patrón MVVM. En la pila de solución Microsoft, el carpeta es un lenguaje marcado llamado XAML. La carpeta libera al desarrollador de estar obligado a escribir la lógica de caldera-plate para sincronizar el modelo de vista y la vista. Cuando se implementa fuera de la pila de Microsoft, la presencia de una tecnología de unión de datos declarativa es lo que hace que este patrón sea posible, y sin una carpeta, normalmente se utilizaría MVP o MVC en su lugar y tendría que escribir más caldera (o generarlo con alguna otra herramienta).

Rationale

MVVM se diseñó para eliminar prácticamente todo el código GUI (código subyacente) de la capa de vista, mediante el uso de funciones de enlace de datos en WPF (Windows Presentation Foundation). Esto facilita la separación del desarrollo de la capa de vista del resto del patrón. En lugar de requerir que los desarrolladores de experiencia de usuario (UX) escriban código GUI, pueden usar el lenguaje de marcado del framework (p. ej., XAML) y crear enlaces de datos al modelo de vista, que es escrito y mantenido por los desarrolladores de aplicaciones. La separación de roles permite a los diseñadores interactivos centrarse en las necesidades de UX en lugar de en la programación de la lógica de negocio. De este modo, las capas de una aplicación se pueden desarrollar en múltiples flujos de trabajo para una mayor productividad. Incluso cuando un solo desarrollador trabaja en todo el código base, una separación adecuada entre la vista y el modelo es más productiva, ya que la interfaz de usuario suele cambiar con frecuencia y en las últimas etapas del ciclo de desarrollo según los comentarios del usuario final.El patrón MVVM busca aprovechar las ventajas de la separación del desarrollo funcional que ofrece MVC, a la vez que aprovecha las ventajas de los enlaces de datos y del framework, vinculando los datos lo más cerca posible del modelo de aplicación puro. Utiliza el enlazador, el modelo de vista y las funciones de verificación de datos de cualquier capa de negocio para validar los datos entrantes. El resultado es que el modelo y el framework controlan la mayor parte de las operaciones posible, eliminando o minimizando la lógica de la aplicación que manipula directamente la vista (por ejemplo, el código subyacente).

Crítica

John Gossman ha criticado el patrón MVVM y su aplicación en casos específicos, afirmando que MVVM puede resultar excesivo al crear interfaces de usuario simples. Para aplicaciones más grandes, cree que generalizar el modelo de vista desde el principio puede ser difícil y que la vinculación de datos a gran escala puede reducir el rendimiento.

Aplicación

. NET frameworks

  • . NET Community Toolkit
  • Avalonia
  • Caliburn, Caliburn.Micro
  • Chinook.DinamicMvvm Fuente abierta
  • DevExpress MVVM
  • Proyecto de código abierto DotVVM
  • FreshMvvm
  • Medusas
  • Mugen MVVM Toolkit
  • MVVMLight Toolkit
  • MvvmCross
  • MvvmZero
  • Biblioteca Prism
  • Rascl
  • ReactiveUI
  • Plataforma Uno - Fuente abierta

Bibliotecas de componentes web

  • Microsoft FAST
  • Omi.js

Java frameworks

  • ZK Studio

Marcos de JavaScript

  • Angular
  • Aurelia
  • Durandal
  • Ember.js
  • Ext JS
  • Knockout.js
  • Oracle JET
  • Reacción
  • Svelte
  • Vue.js

Marco para C++ y XAML (Windows)

  • Xamlcc

Véase también

  • Arquitectura multitier
  • Modelo – vista–controlador
  • Modelo – vista–presentador

Referencias

  1. ^ a b Smith, Josh; et al. "Pensado: MVVM elimina el 99% de la necesidad de ValueConverters". Google Groups.
  2. ^ Martin Fowler (19 de julio de 2004). "El Patrón de Diseño Modelo de Presentación". Martin Fowler.com.
  3. ^ a b c d e f Smith, Josh (febrero de 2009). "WPF Apps with the Model–View–ViewModel Design Pattern". MSDN Magazine.
  4. ^ a b Gossman, John (8 de octubre de 2005). "Tales del cliente inteligente: Introducción al patrón modelo/ViewModel para la construcción de aplicaciones WPF".
  5. ^ a b Massey, Simon (9 de abril de 2011). "Patrones de Presentación en ZK". Retrieved 24 de marzo 2012.
  6. ^ Steve Sanderson. "KnockoutJS".
  7. ^ a b "El Patrón MVVM". msdn.microsoft.com. 4 de octubre de 2012. Retrieved 29 de agosto 2016.
  8. ^ Pete Weissbrod. "Model-View-ViewModel Pattern for WPF: Otro enfoque". Archivado desde el original el 1 de febrero de 2008.
  9. ^ Microsoft (3 April 2024). "Tutorial: Crear una API web con ASP.NET Core".
  10. ^ Wildermuth, Shawn (11 de mayo de 2010). "Windows Presentation Foundation Data Binding: Part 1". Microsoft. Retrieved 24 de marzo 2012.
  11. ^ "ZK MVVM". Potix. Retrieved 24 de marzo 2012.
  12. ^ Karl Shifflett. "Aprender WPF M-V-VM". Archivado desde el original el 13 de abril de 2009. Retrieved 5 de junio 2009.
  13. ^ Gossman, John (4 de marzo de 2006). "Tales del cliente inteligente: Ventajas y desventajas de M-V-VM". AI Skills Challenge.
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save