六边形架构/端口和适配器:具有多个驱动程序适配器的应用程序配置

Hexagonal Architecture / Ports & Adapters: Application Configuration with multiple driver adapters

我正在寻找有关如何配置和构建符合同时支持多个(驱动程序)适配器的六边形体系结构的应用程序的指导或最佳实践。

我的API/Application Layer/Ports代表Application的边界。我现在正在编写驱动程序适配器,目标是应用程序同时支持控制台/CLI 适配器和 REST 适配器。

有没有人对将应用程序配置和连接到一起的主要组件的方法有任何想法?

如果有人可以分享任何示例,那将会很有趣。

干杯,

史蒂夫

这是一个有趣的问题。

从我的角度来看,试图忠实于其作者解释的模式,尽管它也可能 运行 多个驱动程序适配器用于一个驱动程序端口,"app as a whole"(我们称它为系统,因为该应用程序是六边形)是 驱动程序适配器的一个实例 运行在六边形的每个驱动程序端口上,以及实现每个驱动端口的驱动适配器。

系统的配置是每个端口到select的适配器。当您 运行 主要组件时,您必须为每个端口指定所需的适配器。

就是说,为了 运行 系统,我研究了两种方法:

(1) 要有一个额外的组件(将其命名为 main component、composition root、startup、init 或任何你想要的)来实例化驱动适配器和六边形,最后实例化驱动程序适配器和 运行 它们。这样,系统架构在驱动端看起来像一个应用程序容器,在驱动端看起来像一个插件架构。

(2) 到 运行 每个驱动程序适配器各自 。驱动适配器启动游戏,向六边形请求一个驱动端口实例,六边形会向每个驱动端口请求一个驱动适配器实例。

所以对于你的例子中关于主要成分的问题,根据我的方法(1),我会有两个六边形实例运行ning,但是你可以只有一个,我看不出有什么问题。

我在 https://softwarecampament.wordpress.com/portsadapters/ 写了一篇关于六边形架构的理论文章,现在我正在写一篇关于如何实现六边形架构的文章,以及一个代码示例。