.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.
Puedes ver cómo se hace en la arquitectura s # arp . Es un marco arquitectónico muy sólido