design-patterns - 创建应用程序/产品配置的设计模式/指南

标签 design-patterns configuration configuration-files

我想知道是否有任何用于创建“应用程序配置”结构、数据和文件的设计模式、指南或文档化的widsom/最佳实践。
我意识到在一些帖子中已经部分触及了这个问题,但我希望以下问题能促使从另一个方面看待这个话题。

  • 基本上什么样的分析用于创建配置结构?
  • 需要考虑什么样的力量在起作用?
  • 应用程序配置分析/创建何时开始起作用;它是主要设计事件的事后思考或跟进(由应用程序设计决定)还是与主要设计和结构/架构工作本身相互依赖?
  • 以一种方式而不是另一种方式构建配置数据的优缺点是什么。
  • 需要捕捉或了解什么样的需求(灵活性、覆盖能力、缺乏重复、选择等)
  • 开发不良应用程序配置所付出的成本是多少?

  • 具体来说,我的兴趣是开发配置设置的层次结构。

    是否有任何具有足够复杂程度的实际项目可以研究其配置?

    我的问题不是针对文件的格式或类型(是使用平面 ini 还是 json、xml 等),而是首先针对如何进行配置。

    谢谢

    最佳答案

    确定应该在运行时(在应用程序启动期间)而不是在应用程序构建/编译阶段读取配置。您的二进制文件应该始终相同,无论它们在哪里运行。

    在启动期间应用程序应该收到正确的配置(来自文件系统、环境变量、配置服务器等)。另一种可能性是(从同一来源)接收有关应使用哪个配置的信息,然后加载已捆绑在您的包中的正确配置。第二种选择不太灵活,但可能更容易开始。

    能够覆盖开发环境中的特定配置部分(例如通过命令行)非常有用。有时您也可以使用它来快速调试生产问题。但总的来说,我会避免继承和覆盖部分配置,因为它很快变得难以管理和查看整套可用属性。我建议将配置分成两部分。一个 - 在所有环境(常量、路径、公司的邮件服务器等)中通用,第二个 - 在不同运行时(url、db 密码等)之间变化的东西

    你必须牢记测试。您的组件必须在集成测试期间正确初始化。预先或稍后考虑它,您将不得不与您的框架作斗争

    关于design-patterns - 创建应用程序/产品配置的设计模式/指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27673981/

    相关文章:

    ruby-on-rails - 如何处理 Rails/Ruby 中微不足道的 "duplication of code"气味

    Java - 从配置文件加密/解密用户名和密码

    c# - 当保证字符串不变时,字符串比较真的会因文化而异吗?

    java - Apache 的 FileHandler 保存 unicode 转义符而不是特殊字符

    java - 在 Spring 中处理上下文

    php - mvc设计问题

    java - 类层次解决方案

    c# - 在其他选项 services.Configure<>() 内绑定(bind)选项

    java - spring 单元测试上下文配置

    database - 在哪里放置我需要的 Symfony2 自定义参数?