2011-06-06 13 views
25

Esta pregunta se inspira de esta pregunta cerrada:Implementación personalizada de MVVM vs. PRISM

What does Prism actually offer the developer? And is it worth it?

ya he aplicado mis propias implementaciones MVVM costumbre en las aplicaciones empresariales. Estoy interesado en saber:

  • ¿Por qué debería aprender PRISM (específicamente PRISM, no otras estructuras MVVM)?
  • Beneficios de PRISM sobre la implementación personalizada de MVVM y
  • ¿Vale la pena la inversión para aprender PRISM?

espero que esta pregunta no es subjetiva y cada uno por favor no entrar en disputas :)

+3

Bien jugado akjoshi, tenemos algunas buenas respuestas: D – MalcomTucker

+0

Aquí hay una pregunta similar: http://stackoverflow.com/questions/6273357/what-is-prism-for-wpf/ 6273362 # 6273362 – rboarman

Respuesta

23

Al igual que con muchos marcos que hacen una tarea común para usted, se obtiene:

  1. Probado por muchos más ojos: no sólo a sí mismo. Esto (con suerte) incluye pruebas unitarias, que puedes o no estar haciendo mientras construyes tu propio marco.
  2. Más legible para otros desarrolladores: nadie más tiene experiencia con su marco MVVM personalizado. Pero si otro desarrollador se une a su proyecto, o se une a su equipo, o se une a su empresa, pueden saltar directamente al código de Prism.
  3. Mejor documentación: En la misma línea, cualquier persona que se una a la nueva unión probablemente tenga que aprender las cuerdas reuniendo manualmente los conocimientos colectivos de su cerebro y de cualquier otro usuario del equipo y mirando el código fuente. Los marcos de terceros tienen su propia documentación y muchas más publicaciones de blogs en Internet.
  4. Mejor comunidad: Puede hacer preguntas en StackOverflow sobre "¿cómo hago X con Prism?" No puede preguntar eso con su marco personalizado.
  5. Probablemente más capaz: al necesitar servir a más usuarios que solo usted/su equipo, se agregarán más características. Si necesita hacer algo relacionado con MVVM que nunca haya hecho antes, es posible que no esté integrado en su propio marco MVVM. Pero es probable en Prism.
  6. Mejor estructura: Digamos que quería hacer algo relacionado con MVVM pero no estaba en Prism. Muy probablemente, hay una buena razón para eso. Si algo no está en un marco (razonablemente maduro) hecho para trabajar en un dominio dado, eso es una señal de que lo que estás tratando de hacer es una manera antinatural o incómoda de abordar el problema. Trabajando con su propio marco, es muy fácil decir "oh agregaré esa característica", luego 6 meses después se da cuenta de que cometió un gran error porque esta nueva característica hace que su código sea muy difícil de seguir o termine siendo un vector para muchos de errores o cosas por el estilo.
  7. Una línea de pedido CV: Tendría sentimientos encontrados hacia la contratación de alguien que haya "implementado y utilizado un marco MVVM personalizado". Si bien podría significar que son inteligentes, también podría indicar el temido "síndrome no construido aquí". Por otro lado, poner "Microsoft Prism MVVM Framework" entre una gran lista de tecnologías podría ser bueno, pero no es sorprendente. Lo mejor de ambos mundos sería una viñeta más larga, en la línea de "Comprensión profunda del patrón MVVM, lograda implementando primero un marco MVVM de juguete con fines de aprendizaje antes de cambiar a MVVM Prism". Sí, la diferencia entre estos tres no va a hacer ni romper su CV, y el síndrome no construido aquí es algo que esperamos encontrar en una entrevista, pero vale la pena tenerlo en cuenta, especialmente si está presentando una solicitud. para un lugar que obtiene suficientes hojas de vida, pueden darse el lujo de tirar cualquier cosa que los desconcierte un poco.
+7

Buena respuesta ... Pero para 7: Yo diría que puede salirse con la suya con una cantidad mucho menor de código y carga mental al implementar su propio marco MVVM que hace exactamente lo que necesita y nada más en lugar de incurrir en el costo de PRISM. Si miras a MVVM-Light: es muy popular porque captura los bloques de construcción más simples del patrón MVVM sin que tengas que entender una pila de monstruos con toda su magia como en PRISM. Simplemente, dijo: Usar Prism donde podría salirse con la suya con un marco de 300 LOC que hace lo que quiere simplemente no lo vale. – Tigraine

+0

@Tigraine: +1 para señalar que Prism podría no ser el * correcto * marco MVVM, que de hecho era parte de la pregunta del OP. Con suerte, otras personas pueden dar un mejor contraste entre los marcos de MVVM en sus respuestas. El mío estaba más dirigido a la parte "implementación de MVVM personalizada frente a ...", que pensé que traía una gran cantidad de problemas que las personas piensan con mucha menos frecuencia de la que deberían. – Domenic

+0

@Tigraine: ver su actualización: ¿qué "no vale la pena" sobre el uso de Prism vs. 300 LoC Framework, si ambos hacen lo que usted quiere? El único inconveniente parece ser el posible temor de una pila de monstruos con toda su magia, pero creo que los puntos 1 a 6 definitivamente aparecerán en la aplicación de tu framework 300 LoC, a medida que tu aplicación crezca. – Domenic

8

PRISM puede ser interesante para usted porque es más que un marco MVVM. Sí, una parte de ella se puede considerar de hecho como una estructura MVVM (el NotificationObject, el EventAggregator y los objetos Command son todos ejemplos de eso), pero ofrece mucho más.

Se le permite crear aplicaciones compuestas de múltiples parejas sin apretar "módulos". Tiene un marco de navegación muy flexible y extensible (Region Navigation), ofrece integración con contenedores IoC (especialmente Unity y MEF) y un montón de otras características.

Aparte de eso, la documentación (incluido un libro electrónico) es bastante buena y viene con muchos ejemplos y comienzos rápidos. Creo que vale la pena la inversión, que no debería ser mucho, por cierto.

Espero que esto ayude :)

1

Prism es un marco de composición de aplicaciones con características MVVM, pero no es (en mi opinión) un marco MVVM con todas las funciones. Ofrece el mínimo requerido para hacer algún desarrollo básico de MVVM.

Consulte mi respuesta anterior a una pregunta similar para obtener un desglose de los marcos de composición de aplicaciones y marcos MVVM. La mayoría de las aplicaciones de elegir uno de los dos categorías:

Alternatives to Prism + MEF for modular MVVM apps

0

Con prisma y MEF se puede construir altamente extensible y mantenible. Aplicación neta Con cada módulo con su propia interfaz de usuario en su propia DLL separada. La única conexión entre sus módulos o extensiones y MainUI será la región en la que se inyectará la interfaz de usuario de su extensión. Y créanme que es altamente extensible y fácil de mantener

Cuestiones relacionadas