当前位置:首页 > 科技  > 软件

六边形架构:管理复杂性的解决方案

来源: 责编: 时间:2023-12-13 17:02:21 296观看
导读六边形架构是一种将外部系统与核心应用程序分离的架构模式。六边形架构是什么?六边形架构是一种架构模式,将外部系统与核心应用程序分隔开来。其思想很简单。我们从一个六边形开始。然后应用端口和适配器,对吧?六边形有六

六边形架构是一种将外部系统与核心应用程序分离的架构模式。NLm28资讯网——每日最新资讯28at.com

NLm28资讯网——每日最新资讯28at.com

六边形架构是什么?

六边形架构是一种架构模式,将外部系统与核心应用程序分隔开来。NLm28资讯网——每日最新资讯28at.com

其思想很简单。我们从一个六边形开始。然后应用端口和适配器,对吧?NLm28资讯网——每日最新资讯28at.com

六边形有六个边。六边形的形状本身并没有特别含义。它只是提供了一种清晰的方式来讨论和解释应用程序的端口、适配器和领域。NLm28资讯网——每日最新资讯28at.com

这个形状提供了一种解释应用程序流程中小块内容的方式,而不会让观众对整个应用程序的图景感到不知所措。它本质上限制了设计者一次只设计或解释小块容易理解的部分。NLm28资讯网——每日最新资讯28at.com

从内部开始

应用程序领域位于六边形的内部。当我们说领域时,我们指的是遵循领域驱动设计(DDD)原则,并且我们的业务逻辑不会泄露到六边形外部。为了上下文,DDD:NLm28资讯网——每日最新资讯28at.com

  • 专注于通过定义与业务特定部分相关的模型来解决主要问题。
  • 使用所有团队成员都能理解的通用语言。
  • 定义了一个边界上下文,其中封装了领域模型。

遵循DDD原则,为了本文的目的,我使用以下过程提出了以下领域。NLm28资讯网——每日最新资讯28at.com

假设我们正在构建一个新的应用程序,允许用户通过网站将文件上传到一个中央存储库以供共享。NLm28资讯网——每日最新资讯28at.com

以下是一些基本的应用程序要求:NLm28资讯网——每日最新资讯28at.com

  • 由经过身份验证的用户通过网站上传文件。
  • 文件是为程序上传的,或者换句话说是为了某个目的上传的。
  • 程序/目的是一组预先配置的文件规范,文件必须符合这些规范。
  • 程序规则指定一些内容,比如:— 可以上传的文件类型— 字段数量— 其他要求,比如加密或压缩文件— 文件必须符合某些规范才能被接受。
  • 必须授权用户以上传特定程序的文件。

返回领域

领域表示应用程序的关键业务逻辑,允许用户将文件上传到存储库以供其他方共享。请注意,以下领域只涵盖了上传者、上传者的授权和要上传的文件的文件规格。NLm28资讯网——每日最新资讯28at.com

蓝色矩形被称为实体,它们连同蓝色字段一起表示满足我们功能要求所需的结构。NLm28资讯网——每日最新资讯28at.com

NLm28资讯网——每日最新资讯28at.com

一个更全面的领域模型可能包括已上传或已下载文件的下载者和文件配置详情,以及可能应用的数据质量配置。可以争论说这可以进一步划分为子领域,但为了简洁起见,我们将坚持当前的示例。NLm28资讯网——每日最新资讯28at.com

从逻辑上讲,我们的六边形现在看起来像这样:NLm28资讯网——每日最新资讯28at.com

NLm28资讯网——每日最新资讯28at.com

众所周知六边形架构的原则之一是领域不泄露到六边形外部,也不需要了解外部世界的任何信息。NLm28资讯网——每日最新资讯28at.com

在这一点上,我们可以从理论上写出满足这个应用程序基本要求的代码,从业务逻辑功能的角度来看,这将是纯粹的应用程序代码开发。然而,这并不能帮助我们太多,因为业务逻辑被包装在六边形的外边界之内。NLm28资讯网——每日最新资讯28at.com

我们需要一些输入和输出,所以现在我们做一些关于我们如何与领域交互的假设。NLm28资讯网——每日最新资讯28at.com

在最简单的形式下,这些假设听起来像这样:NLm28资讯网——每日最新资讯28at.com

  • 数据以用户的请求形式提交,可以是信息请求或上传文件。(输入)
  • 这些数据经过验证、转换并存储在某个地方。(输出)

我们需要与这个领域交互,以便它能够完成其工作,即授权上传者、接受文件并检查文件规格(基于程序/目的)是否有效。NLm28资讯网——每日最新资讯28at.com

让我们稍作停顿,因为上述两个步骤提到了该架构的另一个好处。在这种纯粹形式下,可以实现单元测试或测试驱动开发(TDD)。NLm28资讯网——每日最新资讯28at.com

编写自动化单元测试可在开发过程中或进行增强时运行,可以减少引入错误的风险,提高代码质量,尤其是如果单元测试作为代码检入和部署活动的一部分进行运行(考虑持续集成/持续交付)。NLm28资讯网——每日最新资讯28at.com

如果你在遵循TDD,你会先在代码中写一个单元测试,然后再写任何功能性代码。该测试将失败,因为你尚未编写任何功能性代码。然后,你编写满足测试的功能性代码。接着你编写下一个测试,然后功能性代码,然后测试,依此类推。NLm28资讯网——每日最新资讯28at.com

这就是本文的全部内容。现在我们已经了解了什么是六边形架构,并创建了我们的领域模型,下一篇我们将探讨如何连接端口和适配器,使架构能够开始管理复杂性。NLm28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-44403-0.html六边形架构:管理复杂性的解决方案

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 现代C++中的原子(std::atomic):详解、代码及应用

下一篇: 软件开发者必备知识框架:代码版本控制Git,DevOps 和 CI/CD的整合

标签:
  • 热门焦点
  • 之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • 品牌洞察丨服务本地,美团直播成效几何?

    来源:17PR7月11日,美团App首页推荐位出现“美团直播”的固定入口。在直播聚合页面,外卖“神枪手”直播间、美团旅行直播间、美团买菜直播间等均已上线,同时
  • 大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大“烤”之下的除了众生,还有各大企业发布的ESG报告。ESG是“环境保
  • 华为HarmonyOS 4.0将于8月4日发布 或搭载AI大模型技术

    华为宣布HarmonyOS4.0将于8月4日正式发布。此前,华为已经针对开发者公布了HarmonyOS4.0,以便于开发者提前进行适配,也因此被曝光出了一些新系统的特性
  • 苹果公司要求三星和LG Display生产「无边框」OLED iPhone显示屏

    据 The Elec 报道,苹果已要求其供应商为未来的 iPhone 型号开发「无边框」OLED 显示面板。苹果显然已要求三星和 LG Display 开发新的 OLED 显示面
  • 半导体需求下滑 三星电子DS业务部门今年营业亏损预计超10万亿韩元

    7月17日消息,据外媒报道,去年下半年开始的半导体需求下滑,影响到了三星电子、SK海力士、英特尔等诸多厂商,营收明显下滑,部分厂商甚至出现了亏损。作为
  • iQOO 11S屏幕细节公布:首发三星2K E6全感屏 安卓最好的直屏手机

    日前iQOO手机官方宣布,新一代电竞旗舰iQOO 11S将会在7月4日19:00正式与大家见面。随着发布时间的日益临近,官方关于该机的预热也更加密集,截至目前已
  • 2022爆款:ROG魔霸6 冰川散热系统持续护航

    喜逢开学季,各大商家开始推出自己的新产品,进行打折促销活动。对于忠实的端游爱好者来说,能够拥有一款梦寐以求的笔记本电脑是一件十分开心的事。但是现在的
Top