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

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

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

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

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

六边形架构是什么?

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

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

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

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

从内部开始

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

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

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

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

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

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

返回领域

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 摸鱼心法第一章——和配置文件说拜拜

    摸鱼心法第一章——和配置文件说拜拜

    为了能摸鱼我们团队做了容器化,但是带来的问题是服务配置文件很麻烦,然后大家在群里进行了“亲切友好”的沟通图片图片图片图片对比就对比,简单对比下独立配置中心和k8s作为配
  • 服务存储设计模式:Cache-Aside模式

    服务存储设计模式:Cache-Aside模式

    Cache-Aside模式一种常用的缓存方式,通常是把数据从主存储加载到KV缓存中,加速后续的访问。在存在重复度的场景,Cache-Aside可以提升服务性能,降低底层存储的压力,缺点是缓存和底
  • K8S | Service服务发现

    K8S | Service服务发现

    一、背景在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问;图片对于测试「Tes」环境或者
  • Flowable工作流引擎的科普与实践

    Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 一文掌握 Golang 模糊测试(Fuzz Testing)

    一文掌握 Golang 模糊测试(Fuzz Testing)

    模糊测试(Fuzz Testing)模糊测试(Fuzz Testing)是通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。可以用来发现应用程序、操作系统和网络协议等中的漏洞或
  • 一条抖音4亿人围观 ! 这家MCN比无忧传媒还野

    一条抖音4亿人围观 ! 这家MCN比无忧传媒还野

    作者:Hiu 来源:互联网品牌官01 擦边少女空降热搜,幕后推手曝光被网友誉为“纯欲天花板”的女网红井川里予,近期因为一组哥特风照片登上热搜,引发了一场互联网世界关于
  • 重估百度丨大模型,能撑起百度的“今天”吗?

    重估百度丨大模型,能撑起百度的“今天”吗?

    自象限原创 作者|程心 罗辑2023年之前,对于自己的“今天”,百度也很迷茫。“新业务到 2022 年底还是 0,希望 2023 年出来一个 1。”这是2022年底,李彦宏
  • 三星Galaxy Z Fold/Flip 5国行售价曝光 :最低7499元/12999元起

    三星Galaxy Z Fold/Flip 5国行售价曝光 :最低7499元/12999元起

    据官方此前宣布,三星将于7月26日也就是明天在韩国首尔举办Unpacked活动,届时将带来带来包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy
  • iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    【Techweb评测】去年10月,iQOO推出了一款Neo7手机,该机搭载了联发科天玑9000+,配备独显芯片Pro+,带来了同价位段最佳的游戏体验,一经上市便受到了诸多用
Top