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).

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.

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.

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

Prompt: UML of ACL between legacy and domain, clean vector.

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.