Zum Inhalt springen

Anti-Corruption Layer

Ein Anti-Corruption Layer (ACL) ist eine Übersetzungsschicht zwischen der eigenen Domäne und einem externen System — einem Backend, einem Drittanbieter, einem anderen Bounded Context.

Externe Systeme sprechen nicht die Sprache der eigenen Domäne. Sie haben ihre eigenen Feldnamen, ihre eigene Semantik, ihre eigenen Konventionen. Wer externe Modelle direkt in die eigene Domäne lässt, verliert die Kontrolle über die eigene Sprache.

External API → ACL → Eigene Domäne
TaskDto Mapper Task
user_id (string) → assigneeId (UserId)
created_at (ISO) → createdAt (Date)
null (kein Nutzer) → Unassigned (expliziter Typ)
export class TaskMapper {
static toDomain(dto: TaskDto): Task {
return {
id: new TaskId(dto.task_id),
title: dto.title,
assignee: dto.assigned_to_user_id ? Assignee.of(dto.assigned_to_user_id) : Assignee.unassigned(),
createdAt: new Date(dto.created_at),
};
}
}
  • Domänensprache: Eigene Begriffe bleiben sauber, externe Begriffe dringen nicht ein
  • Typsicherheit: Externe string-IDs werden zu typisierten Value Objects
  • Stabilität: Ändert sich die externe API, ändert sich nur der Mapper — nicht die Domäne

Jedes Remote hat seinen eigenen ACL zur Shell und zu anderen Remotes. Cross-Remote-Kommunikation geht nie direkt — immer über Übersetzungsschichten.