Hexagonal Architecture(六角形或六边形) 于2005年由 Alistair Cockburn撰写 ,是一个具有许多优势的软件架构,自2015年以来又重新引起了人们的兴趣。
六边架构的初衷是:
允许应用程序同样由用户,程序,自动化测试或批处理脚本驱动,并与最终的运行时设备和数据库隔离开发和测试。
六角形架构允许隔离应用程序的核心业务,并自动测试其行为,而不依赖于其他任何事情。这可能是该架构引起域驱动设计(DDD)从业者关注的原因。但要小心,DDD和六边形结构是两个相当不同的概念,它们可以相互加强,但不一定一起使用。
最后,这种架构设置起来并不复杂。它基于一些简单的规则和原则。让我们探索这些原则,看看它们在实践中的含义。
六角架构原理
六边形体系结构基于三个原则和技术:
1. 原则:独立的应用程序,域和基础结构三个层
第一个原则是明确地将代码分成三个大层。
左侧Application是应用程序端
这是 用户 或外部程序 与应用 程序 交互 的一面。它包含允许这些交互的代码。通常,您的用户界面代码,API的HTTP路由,以及使用您的应用程序的程序的JSON序列化都在这里。(banq注:Spring Boot的控制器)
这里也是Actor角色 驱动领域所在 。注意:Alistair Cockburn谈的是应用程序方面的左侧或用户侧。
领域层Domain中心位置
通过领域层隔离左侧和右侧。它包含所有关注和实现业务逻辑的代码。业务词汇和纯粹的 业务逻辑。
右侧基础设施层
在这里,我们可以找到您的应用程序需要什么,它驱动哪些组件进行工作。它包含必要的基础结构详细信息,例如与数据库交互的代码,调用文件系统或处理对您所依赖的其他应用程序的HTTP调用的代码(集成)。
以下原则将实现在 应用程序 , 域 和 基础结构 之间实现逻辑分层。
这种分离的第一个重要特征是它将 问题分开 。在任何时候,您都可以选择专注于某个逻辑,几乎独立于其他两个逻辑:应用程序的逻辑,业务的逻辑或基础架构的逻辑。它们在不混合的情况下更容易理解,并且每个逻辑的约束对其他逻辑的影响较小。
另一个特点是我们 将业务逻辑放在代码的最前端 。它可以在目录或模块中隔离,以使其对所有开发人员都明确。它可以在不承担程序其余部分的认知负荷的情况下进行定义,改进和测试。这很重要,因为最终,开发人员对生产中的业务有了解。
相关参考:架构整洁之道