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

相关文章

SpringBoot 整合 Grizzly的过程

《SpringBoot整合Grizzly的过程》Grizzly是一个高性能的、异步的、非阻塞的HTTP服务器框架,它可以与SpringBoot一起提供比传统的Tomcat或Jet... 目录为什么选择 Grizzly?Spring Boot + Grizzly 整合的优势添加依赖自定义 Grizzly 作为

springboot整合gateway的详细过程

《springboot整合gateway的详细过程》本文介绍了如何配置和使用SpringCloudGateway构建一个API网关,通过实例代码介绍了springboot整合gateway的过程,需要... 目录1. 添加依赖2. 配置网关路由3. 启用Eureka客户端(可选)4. 创建主应用类5. 自定

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功

SpringBoot整合kaptcha验证码过程(复制粘贴即可用)

《SpringBoot整合kaptcha验证码过程(复制粘贴即可用)》本文介绍了如何在SpringBoot项目中整合Kaptcha验证码实现,通过配置和编写相应的Controller、工具类以及前端页... 目录SpringBoot整合kaptcha验证码程序目录参考有两种方式在springboot中使用k

Spring Boot 中整合 MyBatis-Plus详细步骤(最新推荐)

《SpringBoot中整合MyBatis-Plus详细步骤(最新推荐)》本文详细介绍了如何在SpringBoot项目中整合MyBatis-Plus,包括整合步骤、基本CRUD操作、分页查询、批... 目录一、整合步骤1. 创建 Spring Boot 项目2. 配置项目依赖3. 配置数据源4. 创建实体类

SpringBoot整合InfluxDB的详细过程

《SpringBoot整合InfluxDB的详细过程》InfluxDB是一个开源的时间序列数据库,由Go语言编写,适用于存储和查询按时间顺序产生的数据,它具有高效的数据存储和查询机制,支持高并发写入和... 目录一、简单介绍InfluxDB是什么?1、主要特点2、应用场景二、使用步骤1、集成原生的Influ

SpringBoot整合Canal+RabbitMQ监听数据变更详解

《SpringBoot整合Canal+RabbitMQ监听数据变更详解》在现代分布式系统中,实时获取数据库的变更信息是一个常见的需求,本文将介绍SpringBoot如何通过整合Canal和Rabbit... 目录需求步骤环境搭建整合SpringBoot与Canal实现客户端Canal整合RabbitMQSp

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。