Der Anti-Corruption Layer (ACL) wird verwendet, um das "Durchsickern" unerwünschter Logik, Modelle oder Daten zwischen den integrierten Systemen zu verhindern. Dieses Muster implementiert eine Zwischenebene von Übersetzern, Adaptern und Facaden, um ein domänenspezifisches Modell vom anderen zu isolieren.
Zum Beispiel, bei der Integration eines alten Buchungssystems mit einer neuen E-Commerce-Plattform ermöglicht der ACL die Umwandlung von Datenformaten, deren Validierung und die korrekte Behandlung der Geschäftsregeln beider Seiten.
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 )
Kann man Serialisierung oder ORM anstelle des Anti-Corruption Layers verwenden?
Serialisierung und ORM erleichtern die Übertragung und Speicherung von Daten, schützen jedoch das domänenspezifische Modell nicht vor externen Einflüssen. Nur der ACL gewährleistet die Isolation der Logik und die Übereinstimmung der Geschäftsregeln beider Systeme.
In welchen Fällen ist ein ACL nicht notwendig?
Ein ACL ist normalerweise nicht erforderlich, wenn beide Systeme identische oder abgestimmte Modelle haben und von einem Team verwaltet werden. In der Praxis können jedoch selbst geringfügige Unterschiede zu Problemen ohne ACL führen.
Was passiert, wenn die Integration direkt ohne ACL erfolgt?
Ein hohes Risiko, dass Änderungen im externen System die Geschäftslogik des Hauptsystems negativ beeinflussen oder zu Bugs führen.