Domain-Driven Design Aplicado a .NET 9
[ Domain-Driven Design Aplicado a .NET 9 ]

Glosario de Términos

Este glosario organiza los términos clave de Domain-Driven Design Aplicado a .NET 9 en categorías, proporcionando definiciones claras para facilitar su comprensión y aplicación en proyectos con .NET 9. Como líder de KitsuneData Integral Solutions, he usado estos conceptos para alinear equipos técnicos y de negocio, y este capítulo te servirá como referencia práctica para navegar el libro. Los términos están agrupados en cuatro secciones: DDD, .NET 9, arquitectura, y otros conceptos relacionados.

DDD

Lenguaje Ubicuo: Un vocabulario compartido entre desarrolladores y expertos del dominio, usado consistentemente en el código, la documentación y las discusiones. Garantiza que el software refleje el dominio del negocio. Ejemplo: Usar “Pedido” y “Confirmar” en el código y las reuniones para el sistema de e-commerce (Capítulo 1).

Contexto Acotado: Una división lógica del dominio que define un modelo específico con su propio lenguaje ubicuo, evitando ambigüedades entre diferentes partes del sistema. Ejemplo: “Gestión de Pedidos” y “Gestión de Inventarios” son contextos separados en el caso de estudio (Capítulo 2).

Agregado: Un grupo de entidades y objetos de valor tratados como una unidad para garantizar la consistencia del dominio, con una entidad raíz como punto de entrada. Ejemplo: El agregado Pedido incluye la entidad raíz Pedido y objetos de valor como LineaPedido (Capítulo 3).

Entidad: Un objeto con una identidad única que persiste a lo largo del tiempo, incluso si sus atributos cambian. Las entidades son componentes clave de los agregados. Ejemplo: La clase Pedido con un Id único (Capítulo 3).

Objeto de Valor: Un objeto sin identidad propia, definido por sus atributos, que es inmutable y representa conceptos descriptivos del dominio. Ejemplo: Direccion en el agregado Pedido, con atributos como Calle y Ciudad (Capítulo 3).

Evento de Dominio: Un objeto que representa un cambio significativo en el dominio, nombrado en pasado (e.g., PedidoConfirmadoEvent). Se usa para comunicar estados dentro de un contexto o entre contextos. Ejemplo: Publicar PedidoConfirmadoEvent tras confirmar un pedido (Capítulos 3 y 5).

NET 9

Entity Framework Core (EF Core): Un ORM (Object-Relational Mapping) para .NET 9 que facilita la persistencia de datos en bases relacionales, como SQL Server. En DDD, se usa para mapear agregados a tablas. Ejemplo: Configuración de AppDbContext para persistir el agregado Pedido (Capítulo 4).

ASP.NET Core: Un framework de .NET 9 para construir aplicaciones web y APIs, ideal para implementar microservicios y minimal APIs. En DDD, se usa para exponer servicios de aplicación. Ejemplo: Minimal APIs para crear y confirmar pedidos (Capítulo 5).

C# 13: La versión del lenguaje C# incluida en .NET 9, con mejoras en sintaxis y rendimiento. En DDD, se usa para implementar entidades, objetos de valor, y servicios con un código claro y expresivo. Ejemplo: Uso de record para objetos de valor como LineaPedido (Capítulo 3).

Minimal APIs: Una característica de ASP.NET Core 9 que permite definir endpoints HTTP con un código simplificado, ideal para microservicios. Ejemplo: app.MapPost("/pedidos", ...) para crear pedidos (Capítulo 5).

Arquitectura

Microservicios: Unidades de software autónomas que implementan un contexto acotado, con su propia base de datos y comunicación asíncrona (e.g., mediante eventos). En .NET 9, se construyen con ASP.NET Core y se despliegan con Docker. Ejemplo: Microservicio de “Gestión de Pedidos” (Capítulo 5).

CQRS (Command Query Responsibility Segregation): Un patrón que separa las operaciones de escritura (comandos) de las operaciones de lectura (consultas), permitiendo modelos optimizados para cada propósito. En .NET 9, se implementa con MediatR. Ejemplo: ConfirmarPedidoCommand y ObtenerPedidoQuery (Capítulo 6).

Event Sourcing: Un patrón de persistencia que almacena el estado de un agregado como una secuencia de eventos, permitiendo reconstruir su estado actual. En .NET 9, se usa con EF Core para almacenar eventos como PedidoCreadoEvent (Capítulo 6).

Otros conceptos relacionados

Clean Architecture: Un enfoque de diseño que organiza el código en capas (dominio, aplicación, infraestructura, presentación) para promover la separación de responsabilidades y la mantenibilidad. En DDD, se alinea con la estructura de proyectos para mantener el dominio puro (Capítulo 9).

Repositorio: Un patrón que abstrae el acceso a datos, actuando como una colección en memoria para los agregados. En .NET 9, se implementa con EF Core para encapsular la persistencia. Ejemplo: PedidoRepository para gestionar el agregado Pedido (Capítulo 4).

Inyección de Dependencias: Una técnica que permite proporcionar dependencias a un objeto desde el exterior, promoviendo la modularidad y la facilidad de pruebas. En .NET 9, se usa con el contenedor de ASP.NET Core. Ejemplo: Inyectar IPedidoRepository en un servicio de aplicación (Capítulos 5 y 6).