如何动态配置应用程序?

问题描述:

当我说“配置”时,我的意思是保存那些经常改变的值(常量值如税率或类似的东西),然后当你需要改变它们时,你不想重新编译你的应用程序。如何动态配置应用程序?

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

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

但是,它非常依赖于您开发的应用程序类型。

这取决于你的应用程序是如何构建的。你可以设计你的应用程序,这样你可以改变你的配置位置。通过注入提供者。

+0

你是对的问题是,当系统修改uis巨大,并有任何arquitecture设计 – Rulas 2009-01-28 19:59:12

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

这也取决于有多少应用程序依赖于这个值,例如,如果几个应用程序依赖于某些设置(例如电子邮件服务器地址),最好将它放在数据库中,因为它可以很容易地从任何应用程序正在运行的机器。

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

对于已经使用数据库并且不想让用户轻松更改数据的应用程序,可以使用数据库。

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

不管应用程序,你可能会拥有配置数据的至少3个来源:

  1. 命令行标志,通常提供引导您的运行时环境,例如,寻找配置文件,设置调试标志,包含路径,类路径等
  2. 配置文件,可能不止一个可能会互相覆盖。这些通常引导您的应用程序:连接字符串,缓存设置,特定于构建的设置等
  3. 控制数据库中的数据。诸如时区,转换率,稳定的显示值等。这些数据还应该在数据库中进行版本控制(如在“数据版本”字段中,而不是生活在版本控制系统中)。当您发现需要更改新版本的设置时,对其进行版本控制可以节省很多麻烦,但如果更改新版本,旧版本会中断。

通常,任何在运行时更改的内容都应该放在数据库中。任何敏感且很少改变的东西都应该放到配置文件中,任何黑客应该放在命令行上( - [no] enable-bug-287438-hack在你需要时可以非常方便)。

我更喜欢简单的ini文件。这里有一个例子Setting class,你可能会觉得有用。