2009-05-28 16 views
5

Como he estado aprendiendo sobre WPF, me he concentrado en aplicar solo el patrón MVVM a las aplicaciones.¿Cuándo tiene sentido abandonar MVVM?

Sin embargo, veo que por alguna funcionalidad such as validation, es difícil o imposible seguir siendo fiel al modelo MVVM. Muchas veces simplemente pegando un x: Nombre en un elemento y cambiándolo en código-detrás controlador de eventos resuelve el problema de inmediato.

¿Qué experiencia de mundo real tiene con abandonando el patrón de MVVM?

  • ¿Cuándo tiene sentido abandonar MVVM? p.ej. ¿Ha desarrollado reglas que indiquen que si una aplicación es de cierta complejidad la usará, de lo contrario no lo hará?
  • cuando abandona MVVM paralizarte más tarde (por ejemplo, me imagino que si quieres actualizar tu aplicación para usar la Biblioteca de aplicaciones compuestas, todo el concepto de inyectar ViewModels y el contenedor no funcionará si tienes toda tu lógica en el código detrás de
  • cuando abbandoning MVVM no importa, por ejemplo, me imagino que el código que no quiere/debe haber probado solo puede estar en el código detrás mientras su estructura básica sigue siendo MVVM y se ejecuta pruebas simuladas, etc.

Respuesta

4

Todavía no me he encontrado con nada que sea imposible de hacer después de MVVM. Algunas cosas son difíciles, sí, pero una vez que se encuentra una solución, la dificultad desaparece. Cada vez que se encuentre con algo que es difícil, recuerde sus dos "armas grandes" en este patrón: comportamientos y servicios adjuntos. Con estos dos conceptos firmemente bajo su control, no hay nada que pueda hacer con el código subyacente que no pueda hacer de una manera más limpia y amigable con MVVM. La parte difícil aquí es encontrar el mejor diseño, el más reutilizable ... pero eso es cierto en cualquier código.

¿Cuándo tiene sentido abandonar MVVM? Eso depende de su definición de abandono, pero la respuesta simple es nunca.Si tiene un problema específico y no tiene tiempo para encontrar una solución limpia, lo más práctico es abandonar el patrón para ese área problemática, no del todo como lo sugiere su ejemplo de complejidad.

¿Cuándo te abandona MVVM paralizarte más tarde? Cuando tienes que mantener la aplicación.

¿Cuándo no importa abbandoning MVVM? Programas de demostración/muestra, utilidades desechables/simples y similares.

+0

Supongo que te refieres a Comportamientos adjuntos como en el ejemplo de Josh Smith: http://www.codeproject.com/KB/WPF/AttachedBehaviors.aspx. ¿Qué quiere decir con "Servicios" en relación con MVVM, como en este artículo? http://blogs.msdn.com/jaimer/archive/2007/02/19/creating-user-interfaces-declaratively-using-wpf.aspx –

+0

Ahora hay dos "comportamientos adjuntos". La forma de la vieja escuela, como en el artículo de Josh, y la nueva forma, con Blend Behaviors. http://azurecoding.net/blogs/brownie/archive/2009/04/06/blend-behaviors-ftw.aspx La nueva forma es utilizable, pero hemos estado usando la antigua manera por un tiempo. En cuanto a los servicios, me refiero a Localizador de servicios y/o Inyección de dependencias. Ver Onyx (http://wpfonyx.codeplex.com) (descargo de responsabilidad: soy el autor). – wekempf

0

No he abandonado el patrón MVVM porque nunca lo he aplicado por completo!

Debido a los antecedentes históricos, mi empresa todavía usa bibliotecas nativas C, encapsuladas en bibliotecas administradas, utilizadas en programas C# y WPF. No se pueden usar enlaces, y algunos comportamientos como INotifyPropertyChanged no pueden implementarse porque los cambios se realizan en algún método C profundo ... ¡Refactorizar tan profundamente no es una opción!

Por un lado, entiendo que MVVM puede ser doloroso seguir estrictamente.

Por otro lado, en mi humilde opinión, creo que MVVM es un buen patrón para WPF y se debe utilizar con la mayor frecuencia posible.

5

Creo que el código subyacente está bien si solo está relacionado con la vista. No rompe MVVM porque es la separación de las capas lo que es importante. Si sus máquinas virtuales no se dan cuenta de las vistas, entonces no creo que importe si usó XAML o el código. Intenta minimizar el código rezagado porque generalmente es más limpio y más fácil de hacer en XAML, pero a veces algunas líneas de código son más limpias que muchas XAML. Por ejemplo, vinculando todas las teclas del teclado. Puede escribir 101 enlaces de teclas en XAML o 5 líneas de código.

+1

pragmático, y una respuesta justa. Sin embargo, el problema con el uso del código subyacente es simplemente que se vuelve demasiado fácil poner código ahí que realmente no debería. Si tú/tu equipo tienen la disciplina para hacer esto bien, ve por ello. Sin embargo, no lo consideraría la mejor práctica. – wekempf

0

MVVM es solo una recomendación. Si no te gusta, no tienes que usarlo. Muchas de sus ventajas reivindicadas aún necesitan prueba. Pero siempre se pueden tomar algunas buenas ideas.

Cuestiones relacionadas