六边形架构

六边形架构强调领域层与技术实现的分离,通过适配器模式实现内外层的交互。内层的领域层独立于外层的技术细节,如HTTP框架和数据库,确保业务逻辑的稳定性和可测试性。适配层分为驱动侧和从动侧适配器,后者通过依赖倒置减少领域层对外部的依赖。这种架构提升了系统的可维护性和关注点分离,使得核心业务逻辑更易于理解和管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

六边形架构又称“端口和适配器模式”,是 Alistair Cockburn 提出的一种具有对称性特征的架构风格。在这种架构中,系统通过适配器的方式与外部交互,将应用服务与领域服务封装在系统内部。
六边形架构

六边形架构中边的数目其实没有意义,其实也算一种分层架构,只是分为内层和外层

  1. 内层-领域层:包含了所有的应用逻辑与规则。领域层不会直接引用技术实现细节,比如 HTTP 框架或数据库,确保在技术实现上的改动不会影响到领域层面。
  2. 外层-适配层:负责以某种格式接收输入、产生输出。这一层负责在外部世界与领域层之间进行技术性的转换。适配层又可以分为两种:接收外部输入、输出到领域层的驱动侧适配器,接收领域层输入、输出到存储的从动侧适配器。

六边形架构的核心思想

依赖倒置:

  1. 六边形架构要求:外层依赖内层,内层不能依赖外层。
  2. 对于驱动侧适配器是外部依赖内部,对于从动侧适配器是内部依赖外部,但这不符合“内层不依赖外层”的原则,需要使用“依赖倒置”方法处理,由驱动侧适配器将从动侧适配器注入应用内部。
  3. 从动侧适配器隔离了存储技术细节对领域层的影响,避免了领域层对技术细节的直接依赖。

可测试性:领域层应当可以在不依赖外部的情况下自行测试。(使用测试专用适配器或 Mock 适配器就好了)

关注点分离:

  1. 重心放在领域业务逻辑上,因为领域的业务逻辑相对更加稳定,体现应用的核心价值。
  2. 领域层不会直接引用技术实现细节,Web 框架或数据库都是可以替换的。
六边形架构,也称为端口适配器架构,是一种软件架构模式,主要用于分离应用程序的业务逻辑和外部依赖。其目录结构如下: ``` app ├── adapters │ ├── inbound # 应用程序的入站适配器 │ │ ├── controllers # 控制器层,处理HTTP请求或其他协议的请求 │ │ ├── gateways # 网关层,处理与外部系统的通信 │ │ ├── presenters # 表示层,负责将业务逻辑的结果转换为适合显示的格式 │ │ └── usecases # 用例层,提供可重用的用例操作 │ └── outbound # 应用程序的出站适配器 │ ├── database # 数据库层,处理与数据库的交互 │ └── messaging # 消息队列层,处理与消息队列的交互 ├── config # 应用程序的配置 ├── domain # 应用程序的业务逻辑 │ ├── entities # 实体层,定义应用程序中的核心概念 │ ├── repositories # 仓储层,定义实体的操作接口 │ └── services # 服务层,提供应用程序的核心业务逻辑 └── main.go # 应用程序的入口文件 ``` 其中,`adapters`目录包含了应用程序的入站和出站适配器,用于处理来自外部系统的请求和与外部系统的通信。`inbound`目录包含了控制器、网关、表示和用例层,负责接收和处理来自外部系统的请求,并将其转换为业务逻辑操作。`outbound`目录包含了数据库和消息队列层,负责与这些外部系统的交互。`config`目录包含了应用程序的配置文件。`domain`目录包含了应用程序的业务逻辑,包括实体、仓储和服务层。`main.go`文件是应用程序的入口文件,用于启动应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值