类库(.dll)应该从哪里读取它的配置?

时间:2012-09-27 19:18:59

标签: .net dll configuration web-config class-library

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

问题是用于读取类库配置的良好实践是什么。我可以想到以下几个选项:

  1. 从应用程序域的配置文件中读取。例如,对于.net web app,请从web.config中读取
  2. 从为此类lib创建的特定自定义文件中读取。例如为类lib创建一个xml文件并将配置放在那里。
  3. 调用者应该传递类lib 所需的配置(通过类构造函数)。因此,在这种情况下,类lib不直接从配置文件中读取,而是希望调用者发送所需的信息。
  4. 任何想法/偏好?

2 个答案:

答案 0 :(得分:3)

令人惊讶(或毫不奇怪?)取决于它。

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

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

我认为最好的妥协是允许所有三种可能性as log4net does

答案 1 :(得分:2)

标准做法似乎是这个

  

从应用程序域的配置文件中读取。例如,在.net web app的情况下,请从web.config中读取

如果您通常有一个特定于您的库的配置部分,那么这个实践的大量示例(nhibernate,log4net,spring.net等等)。此部分可以指向一个单独的文件,以使文件尽可能短,例如:

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

修改

我同意@Jeffrey Hantin,它实际上取决于你想要做的配置类型。

应在配置文件上放置“动态”设置,以便灵活轻松地进行更改。其他一些,如nhibernate映射,更适合以“流利”的方式应用(通过代码)。

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