tutorial español .net wpf mvvm frameworks prism

.net - español - Implementación de MVVM personalizada vs. PRISMA



mvvm wpf (4)

Esta pregunta está inspirada en esta pregunta cerrada:

¿Qué ofrece Prism en realidad al desarrollador? ¿Y vale la pena?

Ya he implementado mis propias implementaciones MVVM personalizadas en aplicaciones empresariales. Estoy interesado en saber:

  • ¿Por qué debería aprender PRISM (específicamente PRISM, no otros marcos MVVM)?
  • Beneficios de PRISM sobre la implementación personalizada de MVVM y
  • ¿Vale la pena invertir en aprender PRISM?

Espero que esta pregunta no sea subjetiva y todos, por favor, no se metan en argumentos :)


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

  1. Probado por muchos más ojos : que solo usted 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 de 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 una nueva persona probablemente tenga que aprender las reglas al recopilar manualmente el conocimiento colectivo de su cerebro y de cualquier otro usuario del equipo, y al consultar 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 sobre "¿cómo hago X con Prism?" No puede preguntar eso con su marco personalizado.
  5. Posiblemente más capaz : al necesitar atender a más usuarios que solo a usted / su equipo, se agregarán más funciones. 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 de CV : Tendría sentimientos encontrados hacia la contratación de alguien que haya "implementado y utilizado un marco de 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.

Con prism y MEF puedes 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, es altamente extensible y fácil de mantener


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

Vea mi respuesta anterior a una pregunta similar para un desglose de marcos de composición de aplicaciones y marcos MVVM. La mayoría de las aplicaciones eligen una de ambas categorías:

Alternativas a Prism + MEF para aplicaciones MVVM modulares


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

Le permite crear aplicaciones compuestas de múltiples "módulos" de parejas sueltas . 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 :)