01

Qué es y qué problema resuelve

Clean Architecture conserva reglas de negocio independientes de transporte y almacenamiento. Su garantía se expresa con referencias de compilación: dominio no necesita el framework web; aplicación define capacidades; infraestructura aporta adaptadores y la API conecta el conjunto.

02

Ejemplo paso a paso

Clean Architecture y dirección de dependencias · caso de reservasTexto

Punto de partida Las flechas indican dependencias de código, no orden de ejecución. La API registra adaptadores y el caso de uso conoce contratos.

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.

Dominio → sin referencias al framework web o a persistencia
Aplicación → Dominio
Infraestructura → Aplicación, Dominio
API → Aplicación, Infraestructura

Cómo funciona

  1. Empieza por Dominio y las reglas que no dependen de tecnología.
  2. Sigue las referencias de Aplicación hacia sus contratos.
  3. Ubica EF Core y HTTP en adaptadores y la conexión de implementaciones en composición.

Resultado esperado: Un cambio en almacenamiento no obliga al dominio a importar sus tipos.

03

Cuándo usarlo y qué debes evitar

Una carpeta Domain dentro de un proyecto que importa EF sigue teniendo acceso al proveedor. Verifica referencias y tipos usados.

No añadas capas que solo pasen argumentos sin proteger una frontera. Puedes comenzar con un diseño pequeño y separar proyectos cuando ayude a conservar límites verificables.

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

Revisa referencias de una solución y localiza una dependencia hacia afuera.

  1. 01Prepara el ejemplo con las dependencias indicadas en «Antes de ejecutar».
  2. 02Revisa referencias de una solución y localiza una dependencia hacia afuera.
  3. 03Comprueba y registra el resultado: Un cambio en almacenamiento no obliga al dominio a importar sus tipos.
Ver solución orientativa

Si Dominio importa un contexto o resultados HTTP, mueve ese detalle a un adaptador y conserva el contrato necesario.

05

Comprueba lo aprendido

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

01¿Una interfaz elimina cualquier acoplamiento?

No. Si su firma contiene tipos del proveedor, mantiene esa dependencia.

02¿Dónde colocarías la traducción a Results y el acceso al contexto?

Results pertenece al adaptador HTTP. El acceso al contexto pertenece a infraestructura; el dominio expresa sus reglas sin importar ninguno de esos tipos.

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.

  • El diagrama sitúa Dominio sin referencias al framework web ni a persistencia.
  • Localizas una dependencia hacia afuera y propones una firma que no exponga tipos del proveedor.

Qué debes recordar

  • Las dependencias apuntan hacia las reglas.
  • Los adaptadores implementan los detalles que esas reglas necesitan.
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 · Clean Architecture y dirección de dependenciasLaboratorio 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.