driven domain .net nhibernate naming-conventions domain-driven-design projects-and-solutions

.net - domain - DDD, NHibernate y Estructura/Nomenclatura del proyecto



domain driven design c# (4)

Algunas partes faltantes parecen ser una ubicación central para los servicios necesarios a lo largo de la solución y los proyectos de prueba. Por lo general, tengo algo como esto:

  • Sample.Core: servicios y códigos que deben utilizarse en toda la aplicación
  • Sample.Data - clases de dominio e interfaces de repositorio
  • Sample.Data.NHibernate - mapeo de archivos, configuración fluida, etc. e implementaciones de repositorio, básicamente cualquier cosa específica de capa de mapeo de datos
  • Sample.Services - implementaciones de servicios e interfaces
  • Sample.Web - aplicación web

Tengo un árbol coincidente de proyectos de prueba:

  • Tests / Sample.Core.Tests
  • Pruebas / Sample.Data.NHibernate.Tests
  • etc ...

Por supuesto, el árbol se volverá más complejo dependiendo del proyecto. En cuanto a las discusiones, echa un vistazo a la arquitectura de cebolla . También puede consultar los ejemplos de proyectos sobre Diseño controlado por el dominio y ver qué puede tomar de ellos.

¿Qué recomiendan como la estructura de proyecto adecuada para una solución de WebForms que esté utilizando NHibernate y tratando de incorporar algunos conceptos de DDD?

Suponiendo que el nombre de la raíz y el nombre de la solución es Muestra

  • Sample.Domain - contiene mis objetos de dominio y mis archivos de mapeo
  • Sample.Repositories - contiene mis repositorios y archivo de configuración de conexión nhibernate
  • Sample.Business - contiene mi lógica comercial
  • Sample.Web - el proyecto real de WebForms - todo Presentación

¿Qué estoy olvidando? ¿Hay una forma más estándar de nombrar estos?
¿Alguna buena publicación de blog sobre el tema?


Lo mantengo simple y delgado para segregar por espacio de nombres en lugar de por proyecto, especialmente al principio. Normalmente comienzo con tres proyectos en la solución:

  • Muestra: contiene espacios de nombre Sample.Model, Sample.Model.Mappings y Sample.Services.
  • Sample.Tests - contains unit tests está estructurado de la misma forma que Sample.
  • Sample.Web - UI

He encontrado que cada uno tiene sus propias preferencias para nombrar, prefiero:

  • Sample.Domain - objetos de dominio, archivos de mapeo
  • Sample.Services - lógica de negocios y servicios (y repositorios, aunque pude ver separarlos)
  • Sample.Web - Cosas web.
  • Sample.Migrations - Migraciones de datos.

Ben Scheirman también publicó recientemente sobre esto: Exportación de Visual Studio Solutions con Solution Factory .

Él usa una estructura diferente, pero también incluye una gran manera de estandarizar su plantilla.