5

我已经在做一个 .net 项目,但我认为这个问题可以适用于任何编程语言/框架。

问题是阅读类库配置的良好做法是什么。我可以想到以下选项:

  1. 从应用程序域的配置文件中读取。例如,对于 .net Web 应用程序,从 web.config 读取
  2. 从为此类库制作的特定自定义文件中读取。就像为您的类库创建一个 xml 文件并将您的配置放在那里。
  3. 调用者应将所需的配置传递给类库(通过类构造函数)。所以在这种情况下,类库不会直接从配置文件中读取,而是希望调用者发送所需的信息。

有什么想法/偏好吗?

4

2 回答 2

3

令人惊讶(或不足为奇?)这取决于。

开发人员的角度来看,最好通过库 API 提供调用方配置,因为它允许库在更广泛的上下文中使用,而不依赖于库的托管方式。提供一个可以从应用程序域或私有文件中提取的配置加载器是很重要的,如果不执行任何配置,则合理可用的默认值是一个理智的保护程序。

操作员的角度来看,能够覆盖开发人员提供的任何设置也很有用,因为它们在您的环境中没有意义。但是,如果开发人员故意试图将环境的形状强加给您,我不清楚这将如何工作。

我认为最好的折衷方案是允许所有三种可能性,就像 log4net 一样

于 2012-09-27T19:28:14.223 回答
2

标准做法似乎是这样

从应用程序域的配置文件中读取。例如,对于 .net Web 应用程序,从 web.config 读取

通常你有一个特定于你的库的配置部分,它有很多这种做法的示例(nhibernate、log4net、spring.net 等)。此部分可以指向一个单独的文件,以使您的文件尽可能短,例如:

<log4net configSource="Config\log4net.config.xml" />

编辑

我同意@Jeffrey Hantin,它实际上取决于您尝试执行的配置类型。

应将“动态”设置放在配置文件中,以允许灵活且易于更改。其他一些,作为休眠映射,更适合以“流畅”的方式(通过代码)应用。

流畅的配置减少了拼写错误的可能性,但它们并不总是合适的。

于 2012-09-27T19:21:39.310 回答