分层架构和传统三层架构

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

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

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

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

DDD/ABP 洋葱架构aka整洁架构相关推荐

  1. DDD进阶_DDD分层架构、整洁架构、六边形架构

    DDD从入门到精通,系列文章传送地址,请点击本链接. 本文主要讲解微服务不同架构下的特点,如果还不了解DDD分层架构的,请先学下DDD的分层架构 目录 一.整洁架构 二.六边形架构 三.三种微服务架构 ...

  2. 「领域驱动设计」DDD,六边形架构,洋葱架构,整洁架构,CQRS的整合架构

    这篇文章是软件架构编年史的一部分,一系列关于软件架构的文章.在这些文章中,我写了我对软件架构的了解,我如何看待它,以及我如何使用这些知识.如果您阅读了本系列以前的文章,那么本文的内容可能更有意义. 大 ...

  3. 死磕前端架构之整洁架构在前端的应用实践【稀缺资源】

    在2202年的今天,前端应用走向了 MV* 的架构方案,有了一层很重的 View.随着业务场景的越来越专业化和复杂化,大型 SPA 应用的流行,前端承担的职责也越来越多.即使在精心设计过的架构,也很容 ...

  4. 基于ASP.NET Core 6.0的整洁架构

    背景 最近尝试录制了一个系列视频:<ASP.NET Core 6.0+Vue.js 3 实战开发>,本节是视频内部整洁架构的理论和实战的文字稿.因为在录制之前,我通常会编写完整的文字内容作 ...

  5. 分享一个Go项目的整洁架构模板

    本文翻译自 https://github.com/evrone/go-clean-template,由于本人翻译水平有限,翻译不当之处烦请指出.希望大家看了这篇文章能有所帮助.感谢捧场. 概括 架构模 ...

  6. Go 整洁架构模版,建议收藏

    我是一只可爱的土拨鼠,专注于分享 Go 职场.招聘和求职,解 Gopher 之忧!欢迎关注我. 欢迎大家加入Go招聘交流群,来这里找志同道合的小伙伴!跟土拨鼠们一起交流学习. 本文翻译自 https: ...

  7. 在洋葱(Onion)架构中实现领域驱动设计

    Wade Waldron是一位来自于BoldRadius的资深软件开发者,他在一次演讲中表示,他在几年前开始结合使用领域驱动设计(DDD)与洋葱架构,他的代码质量从此得到了极大的提高.一开始他仅仅使用 ...

  8. DDD CQRS架构和传统架构的优缺点比较

    DDD CQRS架构和传统架构的优缺点比较 https://mp.weixin.qq.com/s?src=3&timestamp=1503011877&ver=1&signat ...

  9. .net core 整洁架构入门

    Clean Architecture with .NET Core: Getting Started # 使用.NET Core整洁架构(Clean Architecture):入门 Over the ...

最新文章

  1. Android--EditText控件属性汇总
  2. Windows 聚焦的锁屏壁纸设置为桌面壁纸
  3. 数据结构---多源最短路径
  4. 让 UV4 支持STC 单片机
  5. shell命令删除昨日的日志_linux定时自动清理日志文件
  6. java windows wrapper_Java Service Wrapper 发布Java程序为Windows服务
  7. 电子游戏理论基础初探
  8. 一百多个Zbrush实用笔刷和Alpah大合集
  9. wordpress图文安装教程 非常详细
  10. 计算机二级办公室应用题目,干货|计算机二级备考攻略
  11. 如何理解和如何选择PDA数据采集器
  12. 倒置的方法//c++
  13. maven是干嘛的?
  14. CLion等JetBrains IDE学生认证免费使用流程
  15. win11蓝牙无法连接怎么办?win11蓝牙无法连接的解决方法
  16. 泛读论文:Person-reID 行人重识别合集
  17. Access to XMLHttpRequest at ‘XXX‘ from origin ‘XX‘ has been blocked by CORS policy: No ‘Access-Contr
  18. windows defender红叉解决方法
  19. python笔记第二章---变量
  20. 使用vue-i18n进行简单的中英文切换

热门文章

  1. C#读写二进制存档文件,可以修改部分单机游戏存档
  2. mail.jar下载 activation.jar下载
  3. STM32中断优先级NVIC
  4. 基于SSM实现的健身房俱乐部管理系统-JAVA【毕业设计、论文、源码、开题报告】
  5. php 免登陆如何使用方法,火车头教程17:dz3.0免登陆接口使用教程
  6. mc9s08dz60添加BootLoader实现CANboot下载更新功能
  7. cnn风格迁移_机器学习:利用卷积神经网络实现图像风格迁移 (一)
  8. Android 移植iperf3.13 测试网络
  9. spring篇(五)官封弼马温
  10. Python脚本抢购茅台,一键式傻瓜教程,不会python 也能用