六边形架构的调用流程 - 第三章 - DDD领域模型

1、六边形架构的调用流程

六边形架构的运作体现为两条清晰的调用路径:一条由外部输入驱动业务逻辑,另一条由业务逻辑驱动外部资源。理解这两条流程是掌握六边形架构实践的关键

如下:

1.1、驱动端调用流程

驱动端流程描述了外部用户或系统如何发起请求并最终被领域核心处理的过程。

其典型流程如下:

  1. 请求接收:外部请求(如HTTP请求、CLI命令、消息队列消息)首先到达对应的输入适配器。
  2. 协议转换:输入适配器负责解析请求,提取参数,并将其转换为对领域核心输入端口的普通方法调用。在此过程中,适配器完成从技术特定协议(如HTTP JSON)到领域模型(如Java对象)的转换。
  3. 业务逻辑执行:输入端口接口的具体实现(通常称为应用服务)接收到调用。该实现位于领域核心内,它协调多个领域对象(实体、值对象、领域服务),执行业务规则和逻辑。
  4. 返回响应:业务逻辑执行完毕后,结果沿原路返回。应用服务返回结果给适配器,适配器可能需将领域对象再次转换为技术特定的DTO,然后通过特定协议(如HTTP Response)返回给外部调用方。

1.2 被驱动端调用流程

被驱动端流程发生在业务逻辑执行过程中,当需要访问外部资源(如数据库、外部API)时:

  1. 接口调用:领域核心内的业务逻辑代码依赖于输出端口(接口),当需要获取或保存数据时,它直接调用输出端口接口的方法。
  2. 依赖注入:通过依赖注入框架(如Spring),在运行时实际注入的是具体的输出适配器。
  3. 技术操作执行:输出适配器实现端口接口,它负责将领域模型的指令转换为具体的技术操作,例如执行SQL语句、调用远程HTTP接口、向消息队列发送消息等。
  4. 结果转换:输出适配器从外部资源获取到数据后,将其转换回领域模型对象,并返回给领域核心。这样,领域核心始终操作的是纯粹的领域模型,而不感知数据来自何种技术实现

调用流程如下图所示:

相关推荐
Tadas-Gao3 小时前
AI是否存在“系统一”与“系统二”?——从认知科学到深度学习架构的跨学科解读
人工智能·架构·系统架构·大模型·llm
程序员JerrySUN6 小时前
OP-TEE + YOLOv8:从“加密权重”到“内存中解密并推理”的完整实战记录
android·java·开发语言·redis·yolo·架构
ZStack开发者社区8 小时前
替代VMware VCF | 详解ZStack Cloud开放架构与异构整合能力
架构
小股虫10 小时前
分布式事务:在增长中台,我们如何做到“发出去的内容”和“记录的数据”不打架?
分布式·微服务·云原生·架构·团队建设·方法论
乾元11 小时前
数据中心流量工程(TE)优化:当 AI 成为解决“维度诅咒”的唯一操纵杆
运维·服务器·网络·人工智能·架构·自动化
云器科技12 小时前
NinjaVan x 云器Lakehouse: 从传统自建Spark架构升级到新一代湖仓架构
大数据·ai·架构·spark·湖仓平台
用户917439653912 小时前
从单系统架构到微服务架构:软件现代化的转型综述
微服务·架构·系统架构
断春风12 小时前
从 JDK 8 到 JDK 21:企业级 Java 版本选择的架构思考
java·架构·jdk
h7ml12 小时前
构建可扩展的企业微信消息推送服务:事件驱动架构在Java中的应用*
java·架构·企业微信
墨辰JC12 小时前
STM32架构基于调度器的非阻塞按键状态机设计
stm32·microsoft·架构·状态机·调度器