防腐层(Anti Corruption Layer)介绍

Posted muzizongheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了防腐层(Anti Corruption Layer)介绍相关的知识,希望对你有一定的参考价值。

防腐层(ACL):DDD(Eric Evans)中引入的模式, 用于隔离两个系统, 允许两个系统之间在不知道对方领域知识的情况下进行集成。

主要进行的是两个系统之间的model(模型)或者协议的转换, 并且最终目的是为了系统使用者的方便而不是系统提供者的方便, 进一步解释就是ACL尽量把系统提供者的模型转换为系统使用者的模型(而不引入中间第三者模型)

 

使用场景: 

  1. 新旧系统切换时, 有些新系统需要和旧系统打交道, 此时可以利用 防腐层隔离新旧系统。

  2. 微服务中多个边界上下文的领域知识需要共享, 可以利用防腐层隔离两个系统

  3. 一个大的系统由多个独立的小组进行维护,可能会出现有些系统重构为新系统,又要保持和其他系统的连接, 此时用防腐层做到独立迭代和兼容

 

ACL的接口:

  1. 提供一组Service

  2. 提供Entity

 

设计模式的实现:

  1. Facade

  2. Adapter

 

示意图:

 

(上图是新旧系统之间通过ACL来做隔离)

 

 

(上图先是用绞杀者模式大范围隔离新旧系统,当新的必须要和旧的交互时,此时用ACL隔离)

 

(上图是重构单体为微服务时,利用ACL可以逐步开发新服务,并利用底层旧model, ACL就是胶水代码)

 

 

(上图是结合ACL和观察者模式, 旧系统触发旧model创建事件, ACL监听后转换为新系统model)

 

 

(上图是旧系统通过ACL提供多个微服务)

 

(这个图更清晰的表达了系统重构后的运行情况, 图中的胶水代码就是ACL)

 

( 上图显示了采用两个子系统的应用程序。 子系统 A 通过防损层调用子系统 B。 子系统 A 与防损层之间的通信始终使用子系统 A 的数据模型和体系结构。防损层向子系统 B 发出的调用符合该B子系统的数据模型或方法。 防损层包含在两个系统之间转换所必需的所有逻辑。 该层可作为应用程序内的组件或作为独立服务实现。)

 

 

所有图片来自网络,有侵权请联系我删除。 :)

以上是关于防腐层(Anti Corruption Layer)介绍的主要内容,如果未能解决你的问题,请参考以下文章

防腐层(Anti Corruption Layer)介绍

策略模式,从防腐层改造聊到Nacos插件的应用

策略模式,从防腐层改造聊到Nacos插件的应用

DDD开发实践流程

管道工作量中的db是啥单位

layer弹层不能实现