Pregunta

Actualmente estoy presentando Prism a una nueva aplicación Wpf, y estoy usando el patrón MVVM. Mi enfoque inicial de estructurar la aplicación Wpf fue agregar un proyecto para mantener las clases modelo, uno para las clases de modelos de vista, etc. Se podrían dividir en un momento posterior para evitar tener componentes lógicos diferentes en el mismo proyecto. Sin embargo, esto me parece una mala estructura cuando se usa Prism (y, en general, para poder utilizarla).

En Prism desea estructurar las cosas en diferentes módulos lógicos, donde cualquier cosa relacionada con las mismas cosas se ubicaría en el mismo módulo. Así que esto me dice que debo poner todo lo relacionado con una parte lógica de mi aplicación en un módulo para esta parte. Esto podría contener algunas vistas diferentes para este componente, el modelo de vista relacionado y las clases de modelo necesarias. Usando este enfoque, sin embargo, obtendría el modelo esparcido alrededor de mi solución. Como el modelo estará vinculado a una base de datos, esto me parece un enfoque posiblemente malo, después de todo. Estoy usando NHibernate, por lo que la base de datos no será realmente " visual " aunque.

Veo tres estructuras diferentes. ¿Alguno de estos es típicamente deseado? ¿O hay una forma diferente de estructurar mi aplicación?

  1. Proyectos " Modelo " ;, " ViewModel ", y también uno para mantener UserControls. Etc.
  2. Una parte lógica del proyecto, que incluye la vista relacionada, el modelo de vista y el modelo para esta parte.
  3. Una parte lógica del proyecto, que incluye view y viewmodel, pero el modelo se define en un proyecto separado. Tal vez incluso un proyecto para todas las clases de modelos si tienen una relación lógica.

¡Cualquier opinión es muy apreciada!

¿Fue útil?

Solución

Poner tu modelo en un proyecto separado está bien. Yo diría que se recomienda si es lo suficientemente grande como para beneficiarse realmente de la arquitectura de estilo prisma. El modelo no se limita al silo vertical de V y VM, sino que es una capa inferior que se encuentra debajo de todos ellos.

Sus vistas y modelos de vista tienen sentido vivir cerca uno del otro. Es posible que encuentre reutilización de vistas o de modelos de vista, pero no se estrese si no lo hace. Dicho esto, una vista no siempre está ligada por siempre a un modelo de vista específico y viceversa. Por ejemplo, tengo un modelo de vista que muestra todas las ventas y un modelo de vista que se filtra en el trimestre actual, pero puedo manipular ambos en la misma vista. Por otro lado, tengo un gráfico circular frente a un gráfico de barras en el mismo modelo de vista. Así que dividir estos no es tan corto y seco. Sin embargo, puede encontrar fragmentos más grandes que simplemente ver / ver pares de modelos. Ventas vs gestión de clientes y tal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top