早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧百科知识频道 --> 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领域驱动设计架构模式:防...相似的小知识:

如图,沙俄通过1860年中俄《北京条约》割占的中国领土是[]A.A区域B.B区域C.C区域D.D区 历史 2020-04-09 …

读图,完成16─19题.A、B、C、D代表我国东部濒临的海洋.我国领土最南端的曾母暗沙位于图中的( 语文 2020-05-16 …

根据《联合国海洋公约》规定,领海是指从领海基点以外的()A、12海里的海域B、24海里的海域C、1 语文 2020-05-16 …

连立不等式x*-6x+y*+5小于等于0,x+y小于等于5,用D表示其领域,曲线x*+y*-2ax 数学 2020-06-04 …

谁会这道题:2001年2月19日,袁隆2001年2月19日,袁隆平获得了我国首届国家最高科学技术奖 历史 2020-07-16 …

南京大学杨豫教授认为现代化是“经济领域的工业化,政治领域的民主化,社会领域的城市化以及价值观念领域的 历史 2020-11-02 …

元代科学家郭守敬在科技方面的卓越贡献主要体现在A.天文和历法领域B.数学和水利领域C.天文和数学领域 历史 2020-11-06 …

(2006益阳)2005年10月,我国“神舟六号”载人飞行圆满成功.这一成果属于第三次科技革命中的A 历史 2020-11-12 …

近代中国科学技术整体上落后于西方列强,但在抗日战争时期仍然出现了跃居世界前列的科技成就,它是()A. 历史 2020-12-12 …

2014年4月8日至11日,博鏊亚洲论坛在海南召开.本届年会首次将议题从经济、社会领域扩展到()A. 政治 2020-12-13 …