Qué marco MVVM es el mejor marco para aplicaciones WPF

Soy un principiante con WPF. Antes de desarrollar mejor el proyecto de mediano y gran tamaño en WPF, necesito trabajar con el framework de MVVM de código abierto / libre para WPF, así que díganme qué estructura de MVVM sería la elección correcta para las aplicaciones de WPF con ayuda de la cual puedo desarrollar UI muy atractiva para aplicaciones empresariales, y que viene con un buen tutorial y un código de muestra abundante para familiarizarse con el flujo del marco. Por favor discuta en detalle. Gracias.

Esta pregunta es realmente difícil de responder objetivamente, porque lo mejor para usted depende tanto de sus requisitos y preferencias. He usado dos marcos yo mismo, entonces esos son los que puedo hablar.

Uno de los marcos MVVM más populares es MVVM Light Toolkit , que es un marco versátil que le permite construir aplicaciones de la manera que desee. Proporciona ayuda para superar algunos de los principales puntos débiles en la creación de aplicaciones MVVM, pero aún así requiere que escriba usted mismo el código repetitivo. Esto podría ser bueno para un nuevo desarrollador de WPF, ya que no oculta gran parte de la infraestructura de WPF.

Mi favorito personal es Caliburn.Micro , que es un marco de MVVM con opiniones obstinadas para WPF, Silverlight y Windows Phone 7. Utiliza un enfoque de convención sobre configuración, que le ahorra escribir mucho del aburrido y tedioso código de plomería. Esto también significa que requiere que esté de acuerdo con la opinión del marco: si no sigue las convenciones que le prescribe, estará librando una batalla cuesta arriba para que todo funcione.

Caliburn.Micro también tiene la cualidad de funcionar , y si realmente no entiendes lo que sucede debajo del capó, las cosas pueden parecer un poco mágicas. Esto es genial, siempre y cuando las cosas estén funcionando. Pero cuando no lo hacen, o si necesita hacer algo que el marco no está diseñado para hacer, necesitará una comprensión bastante sólida de WPF para orientarse.

Debe evaluar las características de diferentes marcos y conjuntos de herramientas y decidir por usted mismo.

Hay muchos frameworks MVVM de código abierto populares.

Probablemente los tres más populares sean MVVM Light , Caliburn o Prism (que, a partir de v4, admite y proporciona ejemplos de MVVM). Los tres tienen fortalezas y debilidades, y todos son buenos.

Prism tiene la ventaja de ser un producto “patrocinado” de Microsoft, tal como lo expuso el grupo de Modelos y Prácticas de Microsoft. Esto tiende a ayudar a la adopción en muchas empresas más grandes. Dicho esto, también es mucho más grande y más complicado que las otras opciones populares, especialmente porque su objective no es solo ser un “Marco MVVM”, sino una biblioteca de propósito general para el desarrollo de aplicaciones compuestas.


Soy principiante para WPF.

También pensé que mencionaría: antes de elegir un marco, me gustaría dedicar un tiempo a tratar de aprender y entender MVVM. Escribí una serie para ayudar a la transición a WPF con MVVM desde Windows Forms, que puede ser de valor.

A menudo, es difícil elegir un marco hasta que entiendas lo que realmente está logrando. La mayor parte de MVVM se puede hacer, muy fácilmente, sin marco alguno. Los “frameworks” agregan utilidades que hacen que ciertos puntos problemáticos del desarrollo de MVVM sean más fáciles de manejar, por ejemplo, MVVM Light tiene una gran clase de Messenger que ayuda con la comunicación entre ViewModels, lo que a veces puede ser complicado. Caliburn tiene algunas herramientas geniales para ayudar con la designabilidad, etc. Sin embargo, hasta que no comprenda los conceptos básicos, la elección de un juego de herramientas puede hacer que su vida sea más complicada, no más simple.

¿Tal vez para poder probar MVVM no necesita usar ninguna biblioteca? Es fácil implementar cosas básicas (DelegateCommand y Class para levantar notificaciones de propiedades, es todo lo que necesita), pero esto lo ayudará a entender MVVM sin introducir ninguna biblioteca. Probablemente encontrará algunos obstáculos durante esta implementación y tendrá que resolverlo por su cuenta, sin bibliotecas de terceros. Creo que esto puede ayudarlo a elaborar una visión más clara sobre el patrón de MVVM (por supuesto, si tiene una buena orientación) pero sin introducir detalles proporcionados por las bibliotecas.

Tal vez soy un inventor de la rueda un poco, pero todavía no uso ninguna biblioteca MVVM en absoluto. Simplemente no veo nada tan bueno que puedan proporcionar para introducir otra biblioteca en el proyecto. Por lo general, no toma mucho implementar las cosas básicas que necesita para MVVM, pero al final recibe un código altamente flexible (porque todo el código es suyo).