Después de 2 años, todavía estoy luchando con MVVM como método práctico para producir software de trabajo. En algunos casos es genial. Hice una aplicación multiproceso que controlaba una pequeña línea de ensamblaje que habría sido una pesadilla sin conceptos MVVM. Una abstracción de la línea de montaje física era casi obvia.
Sin embargo, mi carrera gira principalmente en torno a la línea interna de aplicaciones comerciales: formalizar y optimizar las operaciones de un negocio. En tales aplicaciones, generalmente hay una inquietud comercial que gira en torno a CRUD y operaciones compuestas. En los LOB, mis modelos de vista terminan siendo una colección muy simple de funciones de envoltura de una línea de los métodos de clase empresarial y al final solo terminan complicando las tareas más simples como mostrar un cuadro de mensaje o abrir una ventana. ¿A nadie más le resulta extraño cuando la gente entra en largas descripciones de "inyección de dependencia" y "proveedores de mensajes" para una llamada Window.ShowDialog que ha existido durante décadas? ¿Cuántas otras preguntas hay sobre el desbordamiento de la pila pidiendo consejos para tareas que fueron extremadamente simples en winforms?
No me malinterpreten: obtengo MVVM y cómo podría ser invaluable para los grandes equipos que realizan el desarrollo horizontal de un paquete de software reducido y comercializado. La prueba de la unidad de los modelos de vista podría ahorrar millones al evitar un error RTM malo y los desarrolladores de IU dedicados podrían brindar una experiencia enriquecedora. Pero cuando el costo de redistribución es mínimo y todo lo que la empresa se preocupa por pagar es un simple software de trabajo, ¿por qué debería pasar tiempo en la unidad probando una simple "envoltura" cuando mi lógica de negocios ya está probada? ¿Cuánto tiempo realmente me va a permitir el negocio dedicar animaciones lindas y esquemas de colores? ¿Queda algo para que un desarrollador junior haga (rastrear un error en una funcionalidad de guardar solía mirar "Save_Click",
Es cierto que me gusta mucho el enlace de datos de WPF. Para aprovecharlo, configuro el contexto de datos en la ventana en sí, donde tiene acceso a la clase de negocios, así como a otras propiedades observables. Sí, rompo casi todas las "reglas" MVVM al hacerlo. Pero al menos tengo un código simple controlado por eventos que es fácil de leer Y aprovecho el nuevo enlace de datos y la validación. El problema está en los diseñadores, que no uso mucho, pero espero que ahora esté mejor integrado en 2012, el diseñador muestra los cientos de propiedades que tiene una ventana y sus clases base.
Para aquellos que pueden relacionarse, ¿pueden señalarme recursos, libros o incluso solo cambios de perspectiva que hicieron que esto fuera más fácil de tragar? Le daré otra oportunidad a MVVM, pero la última vez que me sentí bastante estúpido por preocuparme por la inyección de dependencia solo para mostrar un cuadro de mensaje de una VM no tenía intención de realizar pruebas unitarias. Incluso si hice una prueba unitaria, ¿realmente estamos obteniendo más calidad al intercambiar pruebas de tiempo de ejecución por errores de tiempo de compilación de esas temidas aplicaciones "estrechamente acopladas"?
Me doy cuenta de que una respuesta es quedarse en winforms. Pero como uno de los últimos partidarios de WebForms (tengo la misma crítica de la tendencia del desarrollo web), me sentí un poco como un dinosaurio como cuando descubrí que no quedan más WebForms en las pistas de certificación de Microsoft. Avanzar es la única opción, incluso si no me gusta.