【问题标题】:Hexagonal Architecture / Ports & Adapters: Application Configuration with multiple driver adapters六边形架构/端口和适配器:具有多个驱动程序适配器的应用程序配置
【发布时间】:2019-10-21 12:10:31
【问题描述】:

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

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

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

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

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

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

如果有人有任何可以分享的示例,他们会很感兴趣。

干杯,

史蒂夫

【问题讨论】:

    标签: configuration composition clean-architecture hexagonal-architecture


    【解决方案1】:

    这是一个有趣的问题。

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

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

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

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

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

    所以对于您关于示例中主要组件的问题,根据我的方法 (1),我将运行两个六边形实例,但您可能只有一个,我看不到有什么问题。

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

    【讨论】:

    • 谢谢。这对于找到适合我的情况的最佳方法非常有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多