Het Anti-Corruption Layer (ACL) wordt gebruikt om het "doorlekken" van ongewenste logica, modellen of data tussen geïntegreerde systemen te voorkomen. Dit patroon implementeert een tussenlaag van vertalers, adapters en facades om één domeinmodel van een ander te isoleren.
Bijvoorbeeld, bij de integratie van een oud boekhoudsysteem met een nieuw e-commerce platform, kan de ACL het formaat van gegevens converteren, deze valideren en correct omgaan met de bedrijfsregels van beide partijen.
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 )
Kan je serialisatie of ORM gebruiken in plaats van een anti-corruptielaag?
Serialisatie en ORM vergemakkelijken de overdracht en opslag van gegevens, maar beschermen het domeinmodel niet tegen externe invloeden. Alleen ACL biedt isolatie van de logica en naleving van de bedrijfsregels van beide systemen.
Wanneer is een ACL niet nodig?
ACL is meestal niet nodig als beide systemen identieke of afgesproken modellen hebben en door één team worden beheerd. Maar in de praktijk kunnen zelfs de kleinste verschillen problemen veroorzaken zonder ACL.
Wat gebeurt er als de integratie rechtstreeks zonder ACL wordt uitgevoerd?
Er is een hoog risico dat wijzigingen in het externe systeem een negatieve invloed hebben op de bedrijfslogica van het hoofdsyteem of bugs veroorzaken.