什么是六角形架构? -octo

19-02-04 banq
              

Hexagonal Architecture(六角形或六边形) 于2005年由Alistair Cockburn撰写,是一个具有许多优势的软件架构,自2015年以来又重新引起了人们的兴趣。

六边架构的初衷是:

允许应用程序同样由用户,程序,自动化测试或批处理脚本驱动,并与最终的运行时设备和数据库隔离开发和测试。

六角形架构允许隔离应用程序的核心业务,并自动测试其行为,而不依赖于其他任何事情。这可能是该架构引起域驱动设计(DDD)从业者关注的原因。但要小心,DDD和六边形结构是两个相当不同的概念,它们可以相互加强,但不一定一起使用。

最后,这种架构设置起来并不复杂。它基于一些简单的规则和原则。让我们探索这些原则,看看它们在实践中的含义。

六角架构原理

六边形体系结构基于三个原则和技术:

  • 明确区分应用程序,领域和基础结构三个层
  • 依赖关系是从应用程序和基础结构再到领域
  • 我们使用端口和适配器隔离它们的边界

1. 原则:独立的应用程序,域和基础结构三个层

第一个原则是明确地将代码分成三个大层。

左侧Application是应用程序端

这是用户或外部程序与应用程序交互的一面。它包含允许这些交互的代码。通常,您的用户界面代码,API的HTTP路由,以及使用您的应用程序的程序的JSON序列化都在这里。(banq注:Spring Boot的控制器)

这里也是Actor角色驱动领域所在。注意:Alistair Cockburn谈的是应用程序方面的左侧或用户侧。

领域层Domain中心位置

通过领域层隔离左侧和右侧。它包含所有关注和实现业务逻辑的代码。业务词汇和纯粹的业务逻辑。

右侧基础设施层

在这里,我们可以找到您的应用程序需要什么,它驱动哪些组件进行工作。它包含必要的基础结构详细信息,例如与数据库交互的代码,调用文件系统或处理对您所依赖的其他应用程序的HTTP调用的代码(集成)。

以下原则将实现在应用程序基础结构之间实现逻辑分层。

这种分离的第一个重要特征是它将问题分开。在任何时候,您都可以选择专注于某个逻辑,几乎独立于其他两个逻辑:应用程序的逻辑,业务的逻辑或基础架构的逻辑。它们在不混合的情况下更容易理解,并且每个逻辑的约束对其他逻辑的影响较小。

另一个特点是我们将业务逻辑放在代码的最前端。它可以在目录或模块中隔离,以使其对所有开发人员都明确。它可以在不承担程序其余部分的认知负荷的情况下进行定义,改进和测试。这很重要,因为最终,开发人员对生产中的业务有了解。

相关参考:架构整洁之道

              

1