Language agnostic 如何动态配置应用程序?

Language agnostic 如何动态配置应用程序?,language-agnostic,configuration,Language Agnostic,Configuration,当我说“configure”时,我的意思是在哪里保存那些经常更改的值(常量值,如税率或类似值),然后当您需要更改它们时,您不想重新编译应用程序 在哪里保存这些值?数据库XML文件?平面文件?我将INI文件用于潜在的用户可配置文件,将BIN文件用于在运行之间保存会话状态的数据 但是,这完全取决于您开发的应用程序的类型。这取决于您的应用程序的体系结构。你可以这样设计你的应用,你可以改变你的位置配置。只需注入提供者即可。这取决于这些更改的频率以及更改者或更改内容。对于某些特定于应用程序的设置,最好使用

当我说“configure”时,我的意思是在哪里保存那些经常更改的值(常量值,如税率或类似值),然后当您需要更改它们时,您不想重新编译应用程序


在哪里保存这些值?数据库XML文件?平面文件?

我将INI文件用于潜在的用户可配置文件,将BIN文件用于在运行之间保存会话状态的数据


但是,这完全取决于您开发的应用程序的类型。

这取决于您的应用程序的体系结构。你可以这样设计你的应用,你可以改变你的位置配置。只需注入提供者即可。

这取决于这些更改的频率以及更改者或更改内容。对于某些特定于应用程序的设置,最好使用XML或配置文件,由开发人员负责更新。对于其他“业务”值(如汇率、税率等),最好将它们保存在数据库中,并为用户(而不是开发人员)提供一个更新的UI


它还取决于有多少应用程序依赖于此值,例如,如果有几个应用程序依赖于某个设置(如电子邮件服务器地址),最好将其放入数据库中,因为它可以从运行应用程序的任何机器上轻松访问。

通常,如果数据是结构化的,我会使用Ini文件或XML

对于已经使用数据库且不希望用户轻松更改数据的应用程序,可以使用数据库


我几乎从不使用二进制数据,除非您想为用户混淆数据。

无论应用程序如何,您可能至少会有3个配置数据源:

  • 命令行标志,通常用于引导运行时环境,例如,查找配置文件、设置调试标志、包括路径、类路径等
  • 配置文件,可能有多个配置文件相互覆盖。这些通常引导您的应用程序:连接字符串、缓存设置、特定于构建的设置等
  • 控制数据库中的数据。诸如时区、转换率、稳定显示值等。这些数据也应该在数据库中进行版本控制(如“数据版本”字段,而不是在版本控制系统中)。当您发现需要更改新版本的设置时,对其进行版本控制将省去很多麻烦,但如果您更改了,旧版本将崩溃

  • 通常,在运行时更改的任何内容都应该放在数据库中。任何敏感且很少更改的内容都应该进入配置文件,任何黑客攻击都应该进入命令行(-[no]enable-bug-287438-hack在需要时非常方便)。

    我更喜欢简单的
    ini
    文件。下面是一个您可能会发现有用的示例。

    您是对的。问题是,当要修改UI的系统庞大且具有任何结构设计时,您可能会希望将这些设置保留在数据库中。我不希望这样,但我认为这是一个必要的缺点