六边形架构是一种用于设计软件应用程序的架构模式。近年来,它的受欢迎程度有所增加,因为它是传统分层架构的替代品。
分层架构有什么问题? 这种架构模式应用 SoC(关注点分离)原则将我们的组件分解为层,每一层都有不同的职责。通常,有 3 层:
表示层,其中包含用户界面。
业务层或领域层,包含业务逻辑。
持久层,处理数据库操作。
在应用这种架构模式时,我们面临着层与层之间的依赖关系,即每一层都依赖于紧接其下的层。该模型未能表明我们可以与多个数据库交互或根本不与任何数据库交互。此外,表示层没有考虑到用户与我们的应用程序交互的方式可能不止一种。
六边形架构如何克服分层架构的弊端? 该模型将所有业务逻辑置于应用程序的核心,抽象出任何类型的外部依赖。这种隔离使得逻辑更容易测试和维护。 应用程序现在拥有一个或多个处理用户请求的输入适配器,而不是表示层。 类似地,现在我们有一个或多个输出适配器来调用外部应用程序或服务,而不是持久层,例如 Amazon S3 中的文件存储、SendGrid 等电子邮件服务,或者更常见的是数据库。
业务核心有一个或多个端口。端口定义了一组操作,允许核心与适配器进行交互,从而与应用程序外部的内容进行交互。正如我们有两种类型的适配器,输入和输出,有一个输入端口和一个输出端口。输入端口是内核公开的供外部应用程序访问的 API,而输出端口是允许内核使