1

我正在寻找一些指导或最佳实践,以了解如何配置和构建符合同时支持多个(驱动程序)适配器的六角架构的应用程序。

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

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

  • 配置完整应用程序的单个主组件:包括所有主适配器。随着加载应用程序配置。在这种情况下,它将启动 REST 服务并启动 CLI 控制台应用程序。

  • 每种类型的主适配器都有一个单独的主组件。IE。一个用于 REST 应用程序。一个用于 CLI / 控制台应用程序。我担心会导致在边界内配置应用程序的大量重复(即 API 服务、存储库等)。

  • 遵循上述方法,但将通用配置/接线提取到共享类中。

如果有人有任何他们可以分享的例子,那将会很有趣。

干杯,

史蒂夫

4

1 回答 1

1

这是个有趣的问题。

从我的角度来看,尽量忠实于作者解释的模式,尽管也可以为一个驱动程序端口运行多个驱动程序适配器,即“应用程序作为一个整体”(我们称之为系统,因为应用程序是六边形)是在六边形的每个驱动程序端口上运行的驱动程序适配器的实例,以及实现每个驱动端口的驱动适配器。

系统的配置是为每个端口选择的适配器。当你运行主组件时,你必须为每个端口指定你想要的适配器。

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

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

(2)单独运行每个驱动适配器。启动游戏的是驱动适配器,向六边形请求驱动端口实例,六边形会向每个驱动端口询问驱动适配器实例。

因此,对于您关于示例中主要组件的问题,根据我的方法(1),我将运行两个六边形实例,但您可能只有一个,我认为这没有任何问题。

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

于 2019-10-22T16:55:47.610 回答