Explicit Architecture(清晰架构)整合六边形架构和洋葱架构

2023-11-05 17:30

本文主要是介绍Explicit Architecture(清晰架构)整合六边形架构和洋葱架构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

让架构清晰的展现出来

用户界面,这里的代码就是为了适配某个用例的传达机制;
用户核心,这里的代码就是用例和领域逻辑;
基础设施,这里的代码就是为了适配应用核心所需要的工具、库。
在这里插入图片描述
因此,在源码的目录下面,我们可以创建三个文件夹来提现三类代码。这个三个文件夹分别表示三个命名空间,核心代码对用户界面和基础设施是可见的,这就是由外向内的依赖方式。

用户界面

在一个web应用中通常有多套API。例如,一套给客户端使用的REST API,还有一套给第三方应用使用的web-hook,业务还有一套需要维护的遗留SOAP API,或者还有一套给全新移动应用的GraphQL API…
在这里插入图片描述
用户界面主要有三大类:API,CLI,网站。所以我们可以在UserInterface根命名空间下为每个类别创建一个文件夹,如上图所示。

核心

在Core命名空间下,按照最粗粒度来分成三类代码:组件(component)、共享内核(shared kernel)、端口(port)。

组件

在component命名空间下,为每个组件创建一个命名空间,然后在各组的命名空间下,我们再分别为应用层和领域层创建空间。在application和domain命名空间下,我们会将全部的类放在一起,随着类的不断增加,我们在考虑分组。
在这里插入图片描述
这时候我们就要考虑按照业务主体(收据、交易、对账…)分组还是按照技术作用(仓库、服务、值对象…)分组。

端口

和infrastructure命名空间一样,port命名空间里核心使用的每一种工具都有一个命名空间,核心通过这些代码才能使用底层的工具
在这里插入图片描述
这些代码会被适配器使用,他们的作用就是端口和真正的工具之间的转换。这种形式简单得不能再简单了,端口就是一个接口,但是很多时候它还需要值对象、DTO、服务、构建器、查询对象甚至是仓库。

共享内核

我们把组件之间共享的代码放到shared kernel命名空间下。
在这里插入图片描述

基础设施

和用户界面一样,我们的应用使用了多种工具(库和第三方应用),例如ORM、消息队列、SMS提供商。因此,在infrastructure命名空间里,就需要创建(ORM、MessageQueue、SmsClient),然后为每种工具添加对应的适配器。
在这里插入图片描述
最终的代码结构就是:
在这里插入图片描述

这篇关于Explicit Architecture(清晰架构)整合六边形架构和洋葱架构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/351408

相关文章

Spring Boot整合消息队列RabbitMQ的实现示例

《SpringBoot整合消息队列RabbitMQ的实现示例》本文主要介绍了SpringBoot整合消息队列RabbitMQ的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录RabbitMQ 简介与安装1. RabbitMQ 简介2. RabbitMQ 安装Spring

Java对象和JSON字符串之间的转换方法(全网最清晰)

《Java对象和JSON字符串之间的转换方法(全网最清晰)》:本文主要介绍如何在Java中使用Jackson库将对象转换为JSON字符串,并提供了一个简单的工具类示例,该工具类支持基本的转换功能,... 目录前言1. 引入 Jackson 依赖2. 创建 jsON 工具类3. 使用示例转换 Java 对象为

Spring Boot 3 整合 Spring Cloud Gateway实践过程

《SpringBoot3整合SpringCloudGateway实践过程》本文介绍了如何使用SpringCloudAlibaba2023.0.0.0版本构建一个微服务网关,包括统一路由、限... 目录引子为什么需要微服务网关实践1.统一路由2.限流防刷3.登录鉴权小结引子当前微服务架构已成为中大型系统的标

SpringBoot整合easy-es的详细过程

《SpringBoot整合easy-es的详细过程》本文介绍了EasyES,一个基于Elasticsearch的ORM框架,旨在简化开发流程并提高效率,EasyES支持SpringBoot框架,并提供... 目录一、easy-es简介二、实现基于Spring Boot框架的应用程序代码1.添加相关依赖2.添

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

SpringBoot整合DeepSeek实现AI对话功能

《SpringBoot整合DeepSeek实现AI对话功能》本文介绍了如何在SpringBoot项目中整合DeepSeekAPI和本地私有化部署DeepSeekR1模型,通过SpringAI框架简化了... 目录Spring AI版本依赖整合DeepSeek API key整合本地化部署的DeepSeek

Ollama整合open-webui的步骤及访问

《Ollama整合open-webui的步骤及访问》:本文主要介绍如何通过源码方式安装OpenWebUI,并详细说明了安装步骤、环境要求以及第一次使用时的账号注册和模型选择过程,需要的朋友可以参考... 目录安装环境要求步骤访问选择PjrIUE模型开始对话总结 安装官方安装地址:https://docs.

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed