01

Qué es y qué problema resuelve

El modelado del dominio empieza por palabras y reglas del negocio. Entidad, valor y agregado no son nombres de carpetas: representan identidad, significado y un límite de consistencia.

El agregado protege cambios que deben coordinarse juntos sin obligar a cargar todo el sistema.

02

Ejemplo paso a paso

DDD básico: lenguaje, agregados y límites · caso de reservasTexto

Punto de partida Modelo textual original. Separa explícitamente invariantes locales y consistencia compartida.

Antes de ejecutar

Contrato o esquema de diseño para analizar; no es una aplicación ejecutable completa. La evidencia principal es la decisión y su justificación. Una comprobación automatizada requiere implementar el control en una solución preparada.

Reserva
  identidad: Id
  valores: SalaId, GrupoId, Intervalo
  transición: activa → cancelada

Regla compartida: no insertar dos intervalos incompatibles en una sala.

Cómo funciona

  1. Identifica las palabras que usan quienes gestionan salas y reservas.
  2. Distingue entidades con identidad de valores definidos por sus propiedades.
  3. Agrupa los cambios que deben sostener una garantía consistente.

Resultado esperado: Puedes asignar un responsable y una prueba distintos a cada regla.

03

Cuándo usarlo y qué debes evitar

Reserva controla cancelación; Intervalo controla forma del horario. Evitar solapamientos depende de varias reservas y del almacenamiento, por lo que no puede atribuirse solo a una entidad.

Divide por reglas y transacciones, no por cada sustantivo. Un dominio sencillo puede beneficiarse de un modelo pequeño sin adoptar todas las técnicas de DDD.

Ampliación opcional · contexto y variantes del tema

Clean Architecture y modelo del dominio

Organiza dependencias hacia reglas estables. Dominio contiene Reserva e Intervalo; Aplicación define CancelarReserva e IReservas; Infraestructura implementa almacenamiento; API compone y traduce HTTP. La separación se expresa con referencias entre proyectos, no solo con nombres de carpetas. Dominio no debe referenciar EF Core ni ASP.NET Core. La API sí puede conocer Infraestructura para registrar adaptadores en su raíz de composición.

DDD ayuda cuando hay vocabulario y reglas complejas: entidad tiene identidad, objeto de valor representa un concepto y agregado delimita consistencia local. No convierte cada tabla en un agregado ni obliga a microservicios. Reserva protege su transición; la capacidad compartida de Sala puede requerir coordinación fuera de ese objeto. Define el límite según las reglas y la transacción que necesitas, no según la pantalla.

Repository es una abstracción orientada a recuperar y persistir agregados. EF Core ya ofrece muchas capacidades de repositorio y unidad de trabajo mediante DbSet y DbContext. Una capa adicional debe aportar lenguaje, aislamiento o una frontera de pruebas útil. Evita una interfaz genérica que replique todos los métodos de EF o esconda IQueryable sin política clara.

Referencias que puedes verificarTexto

Punto de partida Las flechas significan referencias de compilación. En ejecución la aplicación llama al adaptador inyectado, pero su código solo depende del contrato.

Antes de ejecutar

Esquema de diseño

Reserva.Dominio       → ninguna capa del sistema
Reserva.Aplicacion    → Reserva.Dominio
Reserva.Infraestructura → Reserva.Aplicacion + Reserva.Dominio
Reserva.Api           → Reserva.Aplicacion + Reserva.Infraestructura
Reserva.Pruebas       → proyectos bajo prueba

Resultado esperado: Puedes cambiar un adaptador sin agregar una referencia de infraestructura al dominio.

04 · Práctica guiada · opcional

Practica lo aprendido

Clasifica Id, horario, sala y disponibilidad como identidad, valor o regla compartida.

  1. 01Prepara el ejemplo con las dependencias indicadas en «Antes de ejecutar».
  2. 02Clasifica Id, horario, sala y disponibilidad como identidad, valor o regla compartida.
  3. 03Comprueba y registra el resultado: Puedes asignar un responsable y una prueba distintos a cada regla.
Ver solución orientativa

Id identifica; horario es valor; referencia de sala vincula; disponibilidad requiere coordinación.

05

Comprueba lo aprendido

Responde antes de abrir la explicación. Esta comprobación es opcional y no guarda una puntuación.

01¿Un agregado debe contener cada tabla relacionada?

No. Su límite responde a invariantes y consistencia local.

02¿Qué diferencia hay entre validar un intervalo y garantizar disponibilidad de la sala?

La validez del intervalo depende de sus propios valores; disponibilidad depende de otras reservas y escritores concurrentes. Una entidad aislada no puede proteger por sí sola esa condición compartida.

Cómo demostrar el objetivo

Compara tu práctica con estos resultados. Si solo diseñaste una prueba, registra su resultado como esperado, no como observado.

  • Clasificas Id como identidad e Intervalo como valor con reglas propias.
  • Explicas por qué disponibilidad requiere coordinación fuera de una única reserva.

Qué debes recordar

  • El lenguaje del negocio guía el modelo.
  • Un agregado protege una frontera de consistencia.
Tu cuaderno · notas personales

Cuaderno local

Tus notas del contenido

Se guardan únicamente en este dispositivo. Puedes exportarlas cuando quieras.

Guardado local automático
Material de apoyo · descarga, glosario y referencias
Libro de trabajo · DDD básico: lenguaje, agregados y límitesLaboratorio C# · núcleo y 15 comprobaciones

Explicaciones, ejemplos y prácticas propios de Academia de Software. Los fragmentos de integración requieren las dependencias indicadas; el ZIP contiene el núcleo de consola. Las lecturas externas se consultan en su sitio original y conservan sus condiciones. Procedencia y condiciones de uso.