La Capa Anticorrupción (ACL) se utiliza para evitar que la lógica, los modelos o los datos no deseados "fuiten" entre los sistemas que se integran. Este patrón implementa una capa intermedia de traductores, adaptadores y fachadas para aislar un modelo de dominio de otro.
Por ejemplo, al integrar un viejo sistema de contabilidad con una nueva plataforma de comercio electrónico, la ACL permitirá convertir formatos de datos, validarlos y procesar correctamente las reglas de negocio de ambas partes.
class LegacyUserDTO: def __init__(self, legacy_id, fname, lname): self.legacy_id = legacy_id self.fname = fname self.lname = lname class ModernUser: def __init__(self, id, first_name, last_name): self.id = id self.first_name = first_name self.last_name = last_name def acl_translate(legacy_user): return ModernUser( id=legacy_user.legacy_id, first_name=legacy_user.fname, last_name=legacy_user.lname )
¿Se puede usar serialización o ORM en lugar de la capa anticorrupción?
La serialización y ORM facilitan la transferencia y almacenamiento de datos, pero no protegen el modelo de dominio de influencias externas. Solo la ACL proporciona aislamiento de la lógica y conformidad con las reglas de negocio de ambos sistemas.
¿En qué casos no se necesita ACL?
Normalmente, no se necesita la ACL si ambos sistemas tienen modelos idénticos o acordados y son controlados por un mismo equipo. Pero en la práctica, incluso las más pequeñas diferencias pueden causar problemas sin la ACL.
¿Qué sucederá si la integración se realiza directamente sin ACL?
Hay un alto riesgo de que los cambios en el sistema externo afecten negativamente la lógica de negocio del sistema principal o provoquen errores.