防腐层(ACL) 是 DDD 中隔离两个限界上下文的翻译层。当新系统必须对接遗留系统、第三方服务或语义不同的上游模型时,不让对方的模型、术语和坏味道直接渗入自己的领域模型,而是在边界处放一层适配器:对上游做协议调用,把上游的数据模型翻译成自己领域的概念,反之亦然。
没有 ACL 时,外部模型的字段名、枚举、怪异默认值会扩散到自己的实体和服务里,一旦上游变更,污染面不可控。有了 ACL,变化被收敛在一层之内,领域模型保持纯净,也便于在 ACL 处集中做缓存、重试、降级和数据校验。
实现上通常是一组 Adapter / Translator / Facade,上游模型入、下游模型出,绝不复用对方的类型。代价是多了一层映射代码,对接口极多、模型又高度一致的场景可能得不偿失。
[本领域服务] --(自己的模型)--> [ACL: 翻译/适配] --(上游模型)--> [遗留系统]
追问方向:ACL 与开放主机服务(OHS)、共享内核的关系;与单纯 API Gateway 的区别——Gateway 管流量,ACL 管模型语义。