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整合Dubbo+ZK注册失败的坑及解决

《SpringBoot整合Dubbo+ZK注册失败的坑及解决》使用Dubbo框架时,需在公共pom添加依赖,启动类加@EnableDubbo,实现类用@DubboService替代@Service,配... 目录1.先看下公共的pom(maven创建的pom工程)2.启动类上加@EnableDubbo3.实

SpringBoot整合(ES)ElasticSearch7.8实践

《SpringBoot整合(ES)ElasticSearch7.8实践》本文详细介绍了SpringBoot整合ElasticSearch7.8的教程,涵盖依赖添加、客户端初始化、索引创建与获取、批量插... 目录SpringBoot整合ElasticSearch7.8添加依赖初始化创建SpringBoot项

SpringSecurity整合redission序列化问题小结(最新整理)

《SpringSecurity整合redission序列化问题小结(最新整理)》文章详解SpringSecurity整合Redisson时的序列化问题,指出需排除官方Jackson依赖,通过自定义反序... 目录1. 前言2. Redission配置2.1 RedissonProperties2.2 Red

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

SpringBoot3.X 整合 MinIO 存储原生方案

《SpringBoot3.X整合MinIO存储原生方案》本文详细介绍了SpringBoot3.X整合MinIO的原生方案,从环境搭建到核心功能实现,涵盖了文件上传、下载、删除等常用操作,并补充了... 目录SpringBoot3.X整合MinIO存储原生方案:从环境搭建到实战开发一、前言:为什么选择MinI

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

springboot整合TDengine全过程

《springboot整合TDengine全过程》:本文主要介绍springboot整合TDengine全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录环境准备JDBC-JNI方式准备依赖实体类Mapper配置类测试类RESTful方式实体类配置类测试类总结

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手