Clean Architecture en C#: Guía Completa

Introducción: Dependencias hacia adentro

Clean Architecture organiza el sistema en capas concéntricas donde las dependencias apuntan al dominio.

El negocio queda aislado de frameworks, UI y base de datos.

La regla de dependencia es simple: nada externo puede depender del framework; todo depende del núcleo. Eso hace que el dominio sea estable y la infraestructura sea intercambiable.

El diseño fomenta casos de uso claros, interfaces explícitas y pruebas que no requieren base de datos ni UI.

Clean Architecture
Prompt: Clean Architecture concentric circles diagram, clean minimal style.

1. Naturaleza: Capas concéntricas

Un árbol protege su núcleo con capas externas.

La lógica central permanece intacta aunque cambie la capa exterior.

Las capas externas reciben impacto del clima; el núcleo sigue estable. En arquitectura, esa estabilidad es el dominio protegido de detalles técnicos.

Capas
Prompt: Tree rings cross-section, soft natural illustration.

2. Mundo Real: Sistema judicial

Las leyes (dominio) no dependen de edificios ni tecnología.

Los procesos y herramientas cambian, pero las reglas se mantienen.

Cuando cambia la infraestructura (edificios, expedientes digitales), las reglas jurídicas siguen iguales. En software, eso significa que el dominio no debería cambiar por migraciones técnicas.

Justicia
Prompt: Court system layers diagram, clean flat style.

3. Implementación en C#: Código Paso a Paso

public class CrearPedido
{
    public void Ejecutar() => Console.WriteLine("Pedido creado");
}

public interface IPedidoRepository
{
    void Guardar();
}

En una solución real, el caso de uso orquesta entidades del dominio y utiliza interfaces para persistir. La infraestructura implementa esas interfaces fuera del núcleo.

Esto permite que el dominio sea testeado sin bases de datos ni frameworks web, reduciendo el costo de pruebas.

4. Clean Architecture vs Layered

Clean Architecture invierte dependencias y protege el dominio.

Layered suele acoplar negocio con infraestructura.

Layered es más directa y rápida de implementar; Clean Architecture ofrece mayor resiliencia al cambio de frameworks y almacenamiento.

5. Diagrama UML

UML Clean Architecture
Prompt: UML diagram of Clean Architecture, clean vector layout.
Flujo Clean Architecture
Prompt: Dependency rule flow diagram, minimal infographic style.

⚠️ Cuándo NO Usar Clean Architecture

  • Si el proyecto es pequeño y no requiere tanta estructura.
  • Si el equipo no tiene experiencia en inversión de dependencias.
  • Si necesitas velocidad extrema de prototipado con plazos muy cortos.

💪 Ejercicio

Define un caso de uso y separa interfaces de repositorio en el dominio.

Conclusión

Clean Architecture es ideal para proyectos a largo plazo con cambios frecuentes y necesidad de testabilidad.

Aplicada correctamente, protege el dominio y disminuye el costo de migraciones técnicas y cambios de UI.