本文是为了分享我对“端口和适配器”模式(也称为“六角形体系结构”)的理解,希望它可以对对此主题感兴趣的人有所帮助。
介绍
六角结构(也称为端口和适配器模式)于2005年由Alistair Cockburn记录,是一种软件设计中使用的体系结构模式,可促进与技术和框架的分离。
六角形体系结构是为了避免分层体系结构中已知的结构缺陷。
六角结构(端口和适配器模式)的思想是
- 创建可以轻松连接到其软件环境的松耦合应用程序组件
- 使组件可以在任何级别互换,以便可以由不同种类的客户端(人员,测试用例,其他应用程序……)运行
- 可以与实际应用中的外部设备隔离地进行测试,
分层架构的陷阱
在分层体系结构中,一段时间后,所有项目都陷入了跨层过度耦合的问题。
建筑
Alistair Cockburn'a的目标是使用体系结构阻止业务逻辑从基础结构或框架中迁移,因此他将应用程序域绘制为六角形。
想象一个六角形,这里的六角形就是应用程序本身。 在六边形内部,我们仅拥有对于应用程序试图解决的业务问题很重要的事情。
六边形包含业务逻辑,没有引用任何技术,框架或实际设备。
换句话说,在六边形中,六边形内的任何东西都必须没有技术问题,因此应用程序与技术无关 。
在六边形之外,我们可以与应用程序进行交互的任何现实世界中的事物。
什么是六角形建筑概述
- 在Hexagon内部以及所有 业务模型/逻辑 , 在Hexagon外部:基础架构
- 依赖关系始终从Hexagon的外部到内部 ,这确保了业务域的隔离
- 六边形本身 不依赖任何 东西 , 不能依赖任何技术框架 。
六角形端口和适配器
转接器
适配器用于实现具体的协议,某些外部系统或设备可以通过该协议与应用程序进行通信。
适配器在特定技术和技术自由端口之间转换。
适配器是允许技术与六角形端口进行交互的软件组件
在大多数情况下,REST控制器充当我们的主要适配器,提供端点通过端口(接口)访问域
适配器将特定的技术请求转换为域理解形式,并通过Interface(端口)传递到六角形
港口
端口是应用程序的边界,在图中,端口是六边形的边缘 。
为了让外部与域进行交互,Hexagon提供了分为两类的业务接口(端口) :
API:这些接口由Hexagon实现,也称为“ 入站接口 ”
SPI :(服务提供商接口)是六边形实现业务逻辑所需的功能接口。 它也称为出站接口
六角形的
- 高维护性
- 低技术债务
- 轻松整合任何渠道,例如sql,ftp,Http,Ftp,JMS等。
- 易于测试,因为在需要实施合同时很容易创建模拟。
- 添加新需求意味着添加插件或实施合同。
- 适当分离关注点。
结论
这是我对六角形结构的理解。 在下一部分中,我想使用六边形体系结构遍历用例。
如果您想获得有关该主题的更多信息,请阅读Alistair Cockburn关于该主题的原始文章。
希望本文能帮助您了解六角建筑的概念,以及他们是谁,我将很高兴收到任何反馈!
From: https://hackernoon.com/hexagonal-architecture-introduction-part-i-e51h36id