写点什么

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

  • 2014-11-02
  • 本文字数:1008 字

    阅读完需:约 3 分钟

Wade Waldron 是一位来自于 BoldRadius 的资深软件开发者,他在一次演讲中表示,他在几年前开始结合使用领域驱动设计(DDD)与洋葱架构,他的代码质量从此得到了极大的提高。一开始他仅仅使用了DDD,但随着结合使用洋葱架构,他发现他的代码更加易读易懂了,维护的难度也降低了许多。

洋葱架构有时也被称为端口和适配器(Ports and Adapters)架构,或者是六边形(Hexagonal)架构。不过Wade 认为,后者应该是洋葱架构的一个超集。

核心(Core **)层是与领域或技术无关的基础构件块,它包含了一些通用的构件块,例如 list、case 类或 Actor 等等。核心层不包含任何技术层面的概念,例如 REST 或数据库等等。
领域(Domain**)层
是定义业务逻辑的地方,每个类的方法都是按照领域通用语言中的概念进行命名的。对领域层的控制是通过 API 层进行操作的,而所有的业务逻辑都归属于领域层。这种方式保证了应用程序的可移植性,在不丢失任何业务逻辑的情况下替换掉整个技术实现。
API**** 层是领域层的入口,它使用领域中的术语和对象。Wade 提到:API 层应该仅仅向外界暴露不可变的对象,以避免开发者通过暴露的对象获得对底层领域的访问,并任意修改领域行为。Wade 通常会从 API 层开始编码工作,每个方法就是一个骨架,并且对应一个高层次的功能性测试。随后添加代码逻辑以使该测试通过,以此驱动领域层的编码实现。
基础架构(Infrastructure)层是最外部的一层,它包含了对接各种技术的适配器,例如数据库、用户界面以及外部服务。它能够访问所有处于内部的层次,但多数操作是通过 API 层进行的。但也有一种例外情况的存在 ,就是负责实现领域层中所定义的某些接口(译注:例如各种 Repository 的接口)。

洋葱架构中的一个重要概念是依赖,外部的层能够访问内部的层,而内部的层则对外部的层一无所知。

验证某种设计的常见方式是对各种情景进行测试,例如在必须使用一种新的数据库或用户界面技术时,该设计的表现如何。Wade 认为,如果认真地遵循了 DDD 和洋葱架构的原理,那么是完全能够处理好这种变更的。

Alistair Cockburn 在 2005 年时演示了六边形架构,作为对传统分层架构、耦合与牵连等问题的解决方案。

Russ Miles 去年在一次演讲中介绍了他构思的 Life Preserver 设计,这是一种基于六边形架构的设计。

除了以上两者,还存在着第三种变体,就是 Robert C. Martin 在去年谈到干净架构(Clean Architecture)。

查看英文原文: Domain-Driven Design with Onion Architecture

2014-11-02 05:0012101
用户头像

发布了 428 篇内容, 共 199.0 次阅读, 收获喜欢 39 次。

关注

评论

发布
暂无评论
发现更多内容

数智化转型进行时:业界共话大模型应用创新实践

极客天地

实时语音交互,打造更加智能便捷的应用

HarmonyOS SDK

HarmonyOS

智源研究院推出全球首个中文大模型辩论平台FlagEval Debate

智源研究院

YashanDB Docker镜像制作

YashanDB

数据库 yashandb 崖山数据库

第三方供应商不提供API接口?教你四步破解集成难题

谷云科技RestCloud

数据处理 API API接口 ipaas

观赛邀请|春季超音速四强诞生,邀您见证决赛精彩时刻

RTE开发者社区

盛事启幕 | 第三届OpenHarmony技术大会重磅官宣,邀您共绘智联未来

OpenHarmony开发者

OpenHarmony

低至1元/小时:国庆七天,30元通关《黑神话:悟空》!

轶天下事

1大成果、2个联盟、3大先锋、N个发布!超聚变全方位助力算力强国建设

业界

携手豆包大模型,创维酷开以AI加速OTT场景智能化

新消费日报

保利物业:这样构建数智化,从容超越“内卷之困”

用友BIP

开课啦!北大-用友CIO/CDO数智化进阶课程正式启航

用友BIP

Photoshop2024版本电脑配置要求

Rose

国有企业推行末等调整和不胜任退出制度路径指引

用友BIP

阿里巴巴API与电商创新:商品详情获取的新方法

技术冰糖葫芦

API 接口 API 测试 API 优先 pinduoduo API

高额奖金、校招终面直通卡!北京农商银行2024金融科技挑战赛正式启动!

极客天地

钉钉x昇腾:用AI一体机撬动企业数字资产智能化

Alter

人工智能与伦理:如何确保AI应用中的隐私保护

天津汇柏科技有限公司

AI 伦理 隐私保护 AI 人工智能

SD-WAN可以替代MPLS吗?

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SD-WAN国际专线

使用Yasboot安装YashanDB的疑惑和建议

YashanDB

yashandb 崖山数据库 yasboot

家居零售企业的数智人力战略升级,用友BIP超级版精选案例

用友BIP

Downie4最常用的几种下载方法,全能网页视频下载工具Downie使用教程

Rose

如何利用 StarRocks 加速 Iceberg 数据湖的查询效率

镜舟科技

数据湖 查询优化 iceberg StarRocks

淘宝商品详情数据接口:挖掘电商数据的关键通道

tbapi

淘宝商品详情数据接口 淘宝API接口 淘宝商品详情数据采集 淘宝商品详情数据分析

原生鸿蒙版江苏智慧人社上架,引领全国政务应用加速鸿蒙化

最新动态

谷歌访问助手(谷歌浏览器插件)

Rose

在洋葱(Onion)架构中实现领域驱动设计_架构_Jan Stenberg_InfoQ精选文章