Anti-Corruption Layer en C#: Guía Completa

Introducción: proteger el dominio

ACL aísla tu código de APIs externas incompatibles. Si integras legacy (SOAP, custom protocols), NO lo expones directamente. Creas ACL que traduce requests/responses. Tu código habla con ACL (limpio). ACL traduce a legacy. Ventaja: código independiente. Si legacy cambia, solo ACL se afecta. Desventaja: código translation. Usa cuando integrar sistema que NO puedes cambiar (vendor lock-in, legacy adquisición).

ACL
Prompt: protective layer between systems, minimal style.

1. Naturaleza: membrana selectiva

Como una membrana celular que filtra lo que entra y sale, la ACL filtra conceptos.

Membrana
Prompt: selective membrane illustration, soft colors.

2. Mundo Real: ERP legacy

Un ERP expone códigos arcaicos. La ACL traduce esos códigos a objetos modernos.

ERP
Prompt: legacy ERP to modern domain, flat illustration.

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

public class LegacyAdapter {
    private readonly LegacyClient _client;
    public DomainOrder GetOrder(string id) {
        var legacy = _client.Fetch(id);
        return new DomainOrder(legacy.Id, legacy.Total / 100m);
    }
}

La ACL aplica mapeos, validaciones y normaliza conceptos.

4. ACL vs Adaptadores simples

Un adaptador mapea datos; la ACL protege el lenguaje del dominio.

Incluye reglas y traducciones semánticas.

5. Diagrama UML

UML ACL
Prompt: UML of ACL between legacy and domain, clean vector.
Flow ACL
Prompt: ACL translation flow diagram, minimal infographic.

⚠️ Cuándo NO Usar ACL

  • Cuando no hay legacy real que aislar.
  • Si el costo de mantenimiento supera el riesgo del legado.
  • Si el dominio es trivial.

💪 Ejercicio

Define una ACL para traducir un contrato legacy a tu modelo de dominio.

Conclusión

ACL protege la integridad del dominio en integraciones complejas.