PATRÓN MVVM (MODELOVISTA-VISTA VISTA-VIST A MODELO
HISTORIA El 8 de Octubre de 2005, Jhon Gossman, dió a conocer un nuevo patrón de diseño de la capa de presentación, con las siglas MVVM, Model /View /ViewModel a través de un blog titulado “Introduction to Model/View/ViewModel pattern for building WPF apps” propuesto por Martin Fowlers para tecnologías .NET, XAML, WPF y Silverlight.
DEFINICIÓN MVVM es una evolución del patrón MVC (Model/View/Controller), intenta facilitar el trabajo en paralelo entre alguien encargado en diseñar la interfaz de usuario y otra persona encargada de generar el código que la sustentará, con estos a través de la división de ocupaciones.
MVVM a grandes rasgos Este patrón consta de 3 partes bien diferenciadas
MODEL: es el encargado de representar el modelo del negocio, proveyendo de esta manera la base necesaria para la manipulación de los datos de la aplicación. Cabe resaltar que en el modelo, no debería de existir ninguna lógica de negocio o código que afecte a como se visualizan sus datos en pantalla.
View: Una o más representaciones para el usuario final del modelo de la aplicación. La vista es responsable de mostrar los datos al usuario y de permitir la manipulación de los datos de la aplicación y tendrá que comunicarse con el modelo, para poder cumplir el requerimiento.
ViewModel O Controlador: Es el encargado de ser la capa intermedia entre el modelo y la vista, procesando todas las peticiones que tenga la vista hacia el modelo, además de tener que ocuparse de manejar las reglas del negocio, la comunicación con aplicaciones externas o consumir datos desde alguna fuente (Bases de Datos, Web Services, Sensores, etc.), a demás implementa el comportamiento de la vista para responder a las acciones de los usuarios.
Ventajas
Mayor adaptabilidad a pruebas unitarias. Desacoplamiento de la lógica de la aplicación y la interfaz de usuario. Posibilidad de reutilizar código. Posibilidad de implementar soluciones parecidas con diferentes UI (multiplataforma). Flexibilidad para cambiar la interfase al usuario en una aplicación sin tener que reorganizar su lógica. Aporta beneficios en el mantenimiento de las aplicaciones.
Desventajas
Dependiendo de la dimensión de la solución puede no ser la mejor solución arquitectónica Al principio cuesta entender bien los conceptos. Una seria desventaja del patrón MVVM es que introduce un mayor grado de complejidad. Hay que escribir más código de infraestructura. Se requiere más esfuerzo antes de obtener resultados.
Aplicaciones
Aplicaciones basadas en XAML.
Aplicaciones en WINDOWS PHONE.
Aplicaciones en SILVERLIGHT.
Aplicaciones WEB.
Aplicaciones WPF.
Aplicaciones en ASP.NET
Knockout.js http://knockoutjs.com/ es una biblioteca JavaScript, que nos ayuda a implementar este modelo MVVM. Dentro de las características especiales, tal cual indica en su página, nos permite:
Realizar Binding Declarativos Refresco automático de los elementos del UI, como decía, cuando se actualiza el modelovista, nuestra UI se actualiza automáticamente Tracking de Dependencias, detecta los cambios realizados en la vista o en el modelo y es capaz de propagarlos . Plantillas, permite generar rápidamente plantillas en función de los datos del modelovista.
Además, tal como indica la página es totalmente libre, open source, totalmente construido sobre JavaScript, funciona con cualquier framework adicional, es bastante liviano, solo 40k minimizado, no tiene dependencias , soporte para IE6+, Firefox 2+.Chrome, Opera y Safari (versión móvil y de escritorio) y totalmente documentada.
BIBLIOGRAFÍA
http://maromasdigitales.net/2010/05/patron-mvvm-explicado/
http://fernandomachadopiriz.com/2010/06/09/una-simple-introduccinal-patrn-model-view-viewmodel-para-construir-aplicaciones-silverlight-ywindows-presentation-foundation/
http://cup-coffe.blogspot.com/2012/03/el-patron-model-viewviewmodel-mvvm.html
http://mvpway.wordpress.com/2013/04/10/el-patrn-mvvm/
http://maromasdigitales.net/2010/10/disenoconvergente-en-mvvm-la-vista-y-el-modelo/