2011-01-20 21 views
39

Estoy un poco desactualizado en WPF en este momento y estaría interesado en escuchar las opiniones de la gente sobre la última versión de Prism (que utilicé hace un par de versiones) frente a MVVM Light + Unity (que tengo nunca hecho - los ejemplos decentes URL serían buenos).MVVM Light + Unity or Prism?

Mi proyecto será uno grande que comprenda varios módulos escritos por varios desarrolladores. También hay fondos para traer una suite de control de terceros con el fin de configurar un espacio de trabajo agradable usando uno de los extravagantes administradores de diseño de Docking/Workspace (y sé que algunos juegan mejor con las regiones de Prism que otros).

Si estuviera comenzando un proyecto desde cero en este momento, ¿con qué iría y por qué? Los detalles sobre los patrones de arquitectura recomendados específicos serían útiles (por ejemplo, descubrimiento automático de módulos dlls? ¿Servicio de registro de inyección?). Básicamente, cualquier pensamiento y consejo sería bueno. Me gustaría tener una buena discusión. ¿Quizás hay otra dirección completamente que sugieres que entres? Estoy muy en la fase de investigación y me gustaría la mayor cantidad de información posible.

Puse esto aquí porque pensé que obtendría puntos de vista menos sesgados que los foros de Prism/MVVM Light pero, si hay un lugar más adecuado para esta pregunta, por favor, apúnteme en esa dirección.

Respuesta

55

Si necesita modularidad, querría ver Prism. Prism tiene elementos de que pueden ayudarle con MVVM (DelegateCommand y CompositeCommand, por ejemplo), pero creo que es más completo con otro marco de MVVM.

Hubo una pregunta hace unos días acerca de cómo modelar Prism. Échale un vistazo para obtener una explicación detallada de cómo considerar la funcionalidad de Prism. High Level Modelling Advice for Prism MVVM

Unity es una implementación de un contenedor de inversión de control y definitivamente es bueno, pero Prism tiene la capacidad de usar otros contenedores. Tiene soporte integrado para MEF (que, a su vez, está incorporado a .NET 4.0), pero no es su única opción. Mire algunas de las muestras incluidas en Prism y decida qué enfoque le gusta más. En mi opinión, la unidad no es completa en sí misma para la composición de IU. MEF podría ser una opción más cercana si quisiera tratar de componer una UI con el enfoque MVVM Framework + IoC Framework.

MVVM Light es en realidad un marco complementario para Prism. Otros marcos MVVM a considerar:

  • MVVM Fundación (muy ligero ... bueno para proyectos pequeños)
  • Caliburn (marco muy robusto)
  • Caliburn Micro (comparte un nombre y un autor de Caliburn, pero es similar a MVVM Light con algunas buenas convenciones)
  • ReactiveUI (Anteriormente "ReactiveXAML". Este es un poco de un fundidor de cerebro, pero si aprendes Extensiones Reactivas para .NET (Rx), este marco es simplemente increíble ... mágico en mi opinión.)

Si fuera a comenzar un nuevo proyecto: iría con Prism y ReactiveUI.

Prisma porque tiene que tener modularidad con proyectos grandes y me gusta la capacidad de eliminar y agregar grandes unidades de funcionalidad a una aplicación simplemente eliminando o agregando DLL (y no tiene que implementar la característica de rastreo de DLL como lo haría con solo un enfoque IoC + MVVM). Más fácil de probar, más fácil de depurar, más fácil de desarrollar por separado. Bien por todos lados.

ReactiveUI porque con la interfaz de usuario programación de estos días, la mayor parte de su tiempo se dedica a la gestión de su tiempo en el hilo de interfaz de usuario. El bloqueo es un no-no ... los usuarios no quieren ver una congelación de UI; Quieren ver que el símbolo de espera GIF animado gire para que sepan que pueden trabajar en otra cosa mientras se cargan sus datos. Además, gran parte de las aplicaciones de valor que ofrece estos días es tomar datos de sistemas dispares y ponerlos juntos en la interfaz de usuario ... no solo necesitará un buen sistema de composición (Prism), sino que también necesitará un buen marco MVVM que trata las operaciones asincrónicas como su pan y mantequilla ... ReactiveUI es eso.

+0

Lo siento por retraso en la respuesta a esto, de repente tenía un otro proyecto tienen prioridad y esto fue empujado a la parte posterior de la cabeza. Muy útil respuesta, voy a echar un vistazo a los otros hilos y marcos que me has indicado. – David

+0

Sugiero ver MEF para Silverlight como complemento o reemplazo para los aspectos de composición de Prism. –

Cuestiones relacionadas