存储应用程序全局设置的位置?

Ali*_*Ali 4 c# architecture asp.net coding-style c#-4.0

我有一些全局设置例如以下是一些

ShortLeaveAllowedInOneDay = 2
LeaveAllowedInMonth = 3
Run Code Online (Sandbox Code Playgroud)

我有以下选项来存储这些全局设置

1-Store in Database table
2-Store in Webconfig file
3-Store in class as const filed
4-In XML file

能否请您建议哪一个更好的方法和原因

我正在使用Asp.net MVC3和sqlserver 2005

Phi*_*rie 9

这取决于您的要求,这些选项中的每一个都有自己的优点和缺点.它试图列出一些:

1.存储在数据库表中
优点:

  • 相对容易阅读的设置.
  • 可以编写/更新设置.
  • 访问数据库的速度很快.
  • 可立即更新数据库值.
  • 可以在群集环境中的多个实例之间共享DB.

缺点:

  • 需要比其他选项更多的基础架构(即表,数据库访问等).
  • 如果操作不正确,DB IO可能会成为问题.(可以通过缓存策略解决)



2.存储在web.config文件中
优点:

  • 简单的添加和访问设置.

缺点:

  • 对更改web.config可能会导致应用程序池重新启动.
  • 设置通常不加密.
  • 在群集环境中,文件必须与其他实例保持同步.
  • 通常必须在设置设置时处理字符串数据类型和可能的无效用户输入.



3.作为const字段存储在类中
优点:

  • 使用起来非常简单.
  • 可以使用静态类型.
  • 将设置重构为其他选项之一的良好第一步.

缺点:

  • 需要重建才能更改设置.


4.在XML文件中的
优点:

  • 方便存储复杂的设置,如层次结构.
  • 自定义XML配置设置可以嵌入web.config中.(热门选项见log4net一个这样的例子)
  • 无需重新启动应用程序池即可更新配置文件.
  • XSD可以强制执行文件中设置的有效性(结构和数据类型)

缺点:

  • 它是XML.不是真的人类可读的,格式如YAML提高上.
  • 解析XML以进行读写设置所需的实现.