DDD/ABP 洋葱架构aka整洁架构

35 篇文章 0 订阅
22 篇文章 0 订阅

分层架构和传统三层架构

1、分层架构:把各个组件按照“高内聚、低耦合”的原则组织到不同的项目中。

2、传统的经典三层架构

 三层架构的缺点:尽管有DAL data access layer,但仍然是面向数据库的思维方式;对于一些简单的、不包含业务逻辑的增删改查类操作,仍然需要BLL business logic layer进行转发;依赖关系是单向的,所以下一层中的代码不能使用上一层中的逻辑。

整洁架构(洋葱架构)

1、内层的部分比外层的部分更加的抽象→内层表达抽象,外层表达实现。

2、外层的代码只能调用内层的代码,内层的代码可以通过依赖注入的形式来间接调用外层的代码。简单理解,就是你平常在应用服务实现其接口(记住:应用服务调用领域服务)。然后在别的地方各种依赖注入着用。更简单理解:Angular的依赖注入各种service,service里各种逻辑,其他ts文件也可调用这个service。

recall之前比较难理解的ABP架构图的指向:

结合ABP VNext来理解DDD_董厂长的博客-CSDN博客_abp vnext 多租户DDD:根据领域划分业务,领域可以无限大或者无限小,这取决于业务分析师(产品经理和技术专家)看一下DDD的分层架构,是多层的,单向的,可以跨级访问的。那么ABP框架的架构遵循了DDD的架构思想。每个文件的大概作用如下:...https://blog.csdn.net/dongnihao/article/details/123105225?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166307919616782427476180%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=166307919616782427476180&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-123105225-null-null.nonecase&utm_term=DDD&spm=1018.2226.3001.4450

 

 说一下开发中这种架构的实际用处:

首先是由于使用依赖注入,举个例子,读取邮件被解耦了,可替代,那么开发环境可以使用mock数据,等到了生产环境,再替换上去。仔细想了想,我们开发确实是这么操作的。

对比三层架构谈洋葱架构的优点。

  • 它提供了灵活、可持续和可移植的架构。

  • 各层之间没有紧密的耦合,并且有关注点的分离。

  • 由于所有的代码都依赖于更深的层或者中心,所以提供了更好的可维护性。

  • 提高了整体代码的可测试性,因为单元测试可以为单独的层创建,而不会影响到其他的模块。

  • 框架/技术可以很容易地改变而不影响核心领域。例如,RabbitMQ 可以被 ActiveMQ 取代,SQL 可以被 MongoDB 取代。

防腐层 ACL 

anti corruption layer

外部服务(短信服务、邮件服务、存储服务等)的变化会比较频繁。把这些服务定义为接口,在内层代码中我们只定义和使用接口,在外层代码中定义接口的实现。

体现的仍然是洋葱架构的理念。

理解一下:你平常做的任何继承接口的实现,都是在做防腐层的事情,举个例子,某一天你的验证码服务商换掉啦,只需要重新实现其对应接口。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董厂长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值