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
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, InfraestructuraCómo funciona
- Empieza por Dominio y las reglas que no dependen de tecnología.
- Sigue las referencias de Aplicación hacia sus contratos.
- 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.
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 pruebaResultado 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.
- 01Prepara el ejemplo con las dependencias indicadas en «Antes de ejecutar».
- 02Revisa referencias de una solución y localiza una dependencia hacia afuera.
- 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.
Material de apoyo · descarga, glosario y referencias
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.