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

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

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

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

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

六边形架构是什么?

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

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

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

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

从内部开始

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

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

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

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

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

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

返回领域

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 影音体验是真的强 简单聊聊iQOO Pad

    大公司的好处就是产品线丰富,非常细分化的东西也能给你做出来,例如早先我们看到了新的vivo Pad2,之后我们又在iQOO Neo8 Pro的发布会上看到了iQOO的首款平板产品iQOO Pad。虽
  • 从 Pulsar Client 的原理到它的监控面板

    背景前段时间业务团队偶尔会碰到一些 Pulsar 使用的问题,比如消息阻塞不消费了、生产者消息发送缓慢等各种问题。虽然我们有个监控页面可以根据 topic 维度查看他的发送状态,
  • 如何正确使用:Has和:Nth-Last-Child

    我们可以用CSS检查,以了解一组元素的数量是否小于或等于一个数字。例如,一个拥有三个或更多子项的grid。你可能会想,为什么需要这样做呢?在某些情况下,一个组件或一个布局可能会
  • 分享六款相见恨晚的PPT模版网站, 祝你做出精美的PPT!

    1、OfficePLUSOfficePLUS网站旨在为全球Office用户提供丰富的高品质原创PPT模板、实用文档、数据图表及个性化定制服务。优点:OfficePLUS是微软官方网站,囊括PPT模板、Word模
  • JavaScript学习 -AES加密算法

    引言在当今数字化时代,前端应用程序扮演着重要角色,用户的敏感数据经常在前端进行加密和解密操作。然而,这样的操作在网络传输和存储中可能会受到恶意攻击的威胁。为了确保数据
  • 慕岩炮轰抖音,百合网今何在?

    来源:价值研究所 作者:Hernanderz“难道就因为自己的一个产品牛逼了,从客服到总裁,都不愿意正视自己产品和运营上的问题,选择逃避了吗?”这一番话,出自百合网联合创
  • 当家的盒马,加速谋生

    来源 | 价值星球Planet作者 | 归去来自己“当家”的盒马,开始加速谋生了。据盒马官微消息,盒马计划今年开放生鲜供应链,将其生鲜商品送往食堂。目前,盒马在上海已经与
  • 东方甄选单飞:有些鸟注定是关不住的

    作者:彭宽鸿来源:华尔街科技眼‍‍‍‍‍‍‍‍‍‍东方甄选创始人俞敏洪带队的“7天甘肃行”直播活动已在近日顺利收官。成立后一
  • 2022爆款:ROG魔霸6 冰川散热系统持续护航

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