早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧百科知识频道 --> IT百科 -->架构设计 -->

DDD领域驱动设计架构模式:防腐层(Anti-corruption layer)的作用是?

场景/问题/来源
(领域驱动设计)

软件设计中防腐层的作用是?

知识/回答

在微服务(Microservices)架构实践中,架构设计借用了DDD中的一些概念和技术,比如一个微服务对应DDD中的一个限界上下文(Bounded Context);在微服务设计中应该首先识别出DDD中的聚合根(Aggregate Root);还有在微服务之间集成时采用 DDD中的防腐层(Anti-Corruption Layer, ACL)。

本文介绍了防腐层相关的概念和应用场景。

一、防腐层(Anticorruption Layer)简介

防腐层(Anticorruption Layer):一个上下文通过一些适配和转换与另一个上下文交互。

防腐层是一种在不同应用间转换的机制。 创建一个防腐层,以根据客户端自己的领域模型为客户提供功能。该层通过其现有接口与另一个系统进行通信,几乎不需要对其进行任何修改。

在不共享相同领域模型的不同子系统之间实施防腐层(或外观或适配器层),此层转换一个子系统向另一个子系统发出的请求。 使用反腐层(Anti-corruption layer)模式可确保应用程序的设计不受限于对外部子系统的依赖。 反腐层(Anti-corruption layer)模式最先由 Eric Evans 在 Domain-Driven Design(域驱动的设计)中描述。

因此,防腐层隔离不仅是为了保护自身领域模型免受其他领域模型的代码的侵害,还在于分离不同的域并确保它们在将来保持分离。

二、防腐层应用场景

在以下情况下,可以考虑使用防腐层。

(1)旧版单体应用迁移到新版微服务系统,但是迁移计划发生在多个阶段,新旧系统之间的集成需要维护。

大多数应用程序依赖于其他系统的某些数据或功能。 例如,旧版应用程序迁移到新版应用系统时,可能仍需要现有的旧的资源,新功能必须能够调用旧系统。逐步迁移功能尤其如此,随着时间推移,较大型应用程序的不同功能迁移到新式系统中。

这些旧系统通常会出现质量问题,如复杂的数据架构或过时的 API。旧系统使用的功能和技术可能与新版微服务系统中的功能和技术有很大差异。 若要与旧系统进行互操作,新应用程序可能需要支持过时的基础结构、协议、数据模型、API、或其他不会引入新版应用程序的功能。

此时的解决方案是:在不同的子系统之间放置防腐层以将其隔离。此层转换两个系统之间的通信,在一个系统保持不变的情况下,使另一个系统可以避免破坏其设计和技术方法。

新旧系统都拥有自身的领域模型,防腐层包含了两个系统之间转换所必需的所有逻辑。

(2)两个或更多不同的子系统(或限界上下文)具有不同的领域模型,需要对外部上下文的方法进行一次转义。

两个限界上下文之间的关系方向由术语上游(UpStream)和下游(DownStream)描述。

下图是采用无防腐层的设计,图中限界上下文Statistics和OrderProcess都使用相同的领域模型。

我们可以看出防腐层的作用:

1)在架构层面,通过引入防腐层有效隔离限界上下文之间的耦合;

2)防腐层同时还可以扮演适配器、调停者、外观等角色;

3)防腐层往往属于下游限界上下文,用以隔绝上游限界上下文可能发生的变化;

DDD领域驱动设计架构模式:防...相似的小知识:

常用温度计是利用液体的热胀冷缩来测量温度的,用摄氏度做温度单位时,表示符号为,图中温度计甲的示数为 物理 2020-05-13 …

常用液体温度计是利用液体的性质制成的.下面关于常用温度计使用方法中正确的操作顺序是:.A.观察温度 其他 2020-05-13 …

有关概念结构设计,下列说法正确的是(54)。A.概念结构设计是应用程序模块设计的基础B.概念结构设计 计算机类考试 2020-05-26 …

有关概念结构设计,下列说法正确的是(15)。A.概念结构设计是应用程序模块设计的基础B.概念结构设计 计算机类考试 2020-05-26 …

容积式流量计是应用( )法测量流量的.在原油长输管道上常用腰轮(罗茨)流量计、椭圆齿轮流量计、刮板 职业技能鉴定 2020-05-31 …

液体温度计是利用液体热胀冷缩的性质制成的.用两种不同的液体做成两支温度计,刻度的方法,都按照摄氏度 物理 2020-06-19 …

(1)温度计是利用液体的原理制成;人体的正常体温是.(2)如图所示,体温计的读数是;体温计可以离开人 其他 2020-11-03 …

如图所示是晓彤自制的密度计,关于该密度计,下列说法正确的是()A.密度计是利用漂浮的条件工作的B.密 物理 2020-11-03 …

阅读材料形形色色的温度计除了常用的液体温度计以外,还有电阻温度计、热电偶温度计和光学(辐射式)温度计 物理 2020-11-04 …

小博设计了如图所示的甲、乙两种装置来探究“冰熔化时温度变化规律”.(m)本实验都需要用到的测量仪器是 物理 2020-11-11 …