Simple consejo de arquitectura de aplicación

Estoy intentando crear una pequeña aplicación web de demostración que esté acoplada de forma flexible, sea altamente comprobable, tenga un código limpio, etc. En resumen, estoy experimentando haciendo las cosas de la manera correcta. ;)

Actualmente tengo tres proyectos en mi solución Wolfie:

Wolfie.Core - contiene entidades comerciales Wolfie.Data: contiene el código de acceso a datos, hace referencia a Core. Wolfie.Web - será un sitio web elegante.

Tal como está, el Core no sabe nada sobre ninguno de los otros proyectos. Los datos deben hacer referencia a Core, ya que Core tiene los tipos que los Datos devolverán. Entonces, en este punto, me doy cuenta de que Web necesitará hacer referencia a Core y Data para poder funcionar, ya que el tipo de entidad está en Core y las llamadas a la base de datos están en Data.

Todas las clases de repositorio en Data tienen interfaces para que los repositorios puedan ser simulados para pruebas.

No creo que quiera poner ningún código específico de base de datos o referencias en Core, y quiero mantener las reglas comerciales de mi entidad fuera de los Datos.

Lo escorrect para hacer referencia a ambos proyectos desde la Web? o se requeriría otro proyecto entre Web y los demás para que Web solo haga referencia a un lugar y no sea responsable de llamar a métodos de datos, etc.

o que busco es una arquitectura en la que mi aplicación principal sea independiente de las capas de datos y web.

Espero haber hechoalguno sense y espero algunas respuestas útiles.

Respuestas a la pregunta(10)

Su respuesta a la pregunta