gpt4 book ai didi

configuration - 我的程序的 "services"是否应该负责获取自己的配置?

转载 作者:行者123 更新时间:2023-12-04 06:31:34 25 4
gpt4 key购买 nike

我的程序由几个“服务”组成(我不是在谈论 SOA,所以不要混淆),并且每个“服务”都使用一些配置(例如,目录路径)。该配置应该从配置文件中读取,因为它们往往会发生变化(也就是说,不会改变程序的逻辑)。

所以我的问题是 - 每个“服务”在调用时应该接收其配置,还是应该负责获取自己的配置?

这题其实和this很像问题,只有我的更具体:

  • 我的程序的“服务”不是通用的,不应该被其他人重复使用。他们已经在使用通用工具,并且他们的功能是简单地连接这些工具。这意味着他们不会立即收到他们的配置,因为他们的目标非常明确和直接。
  • 这些“服务”的目标明确而直接,有时需要采取不止一项行动。这意味着我的“服务”不必只负责一项操作(尽管您可以将逻辑和准备工作(例如配置)分开)。

谢谢。

最佳答案

我提倡结合使用这些方法,只要您设法以优雅的方式实现它(我在优雅和可怕的实现中都看到过这种做法):

  • 有一个可以实现设置子集的配置数据结构(在 Perl 中,使用 super 强加的哈希非常简单,在其他语言中,它有点冗长,但将映射相互叠加也可以)。为了更精确,您的数据结构将是

    • 全局单例配置图

    • “作为参数传递”的本地配置映射

  • 有一个配置加载器类,它可以:

    • 取“passed as parameter”本地配置图

    • 取一组组件需要的key

    • 将局部图叠加到全局配置图上

    • 允许组件从组合映射中查询出值。

  • 这样,服务的每个调用者都有完全的自由,可以无忧无虑地让每个服务处理自己的配置需求,或者为了更可控的行为,可以选择将它想要控制的特定配置设置传递给服务(手动创 build 置值,或从全局配置中克隆数据子集并进行调整)。

这对测试有很大的好处,因为测试框架可以传递每个测试所需的特定配置本地覆盖。

关于configuration - 我的程序的 "services"是否应该负责获取自己的配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1450788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com