使用数据库保存应用程序设置

Dan*_*son 5 c# database asp.net web-config appsettings

我正在寻找使我们的应用程序更具可扩展性和更易于操作的方法,而无需更改 web.config (或者,在我们的例子中,是包含 appsettings 节点的 application.config 文件)。

我考虑过的一种方法是将应用程序设置保留在具有 sqlcachedependency 的数据库表中。这意味着:

  • 每当数据库中的设置发生更改时,缓存就会失效,并再次检索设置,从而实时更新应用程序,而无需更改文件并重新启动整个应用程序。
  • 我们可以创建一个自定义工具来更改设置。

我认为的缺点是,这可能会导致严重的逻辑问题,因为如果您有一些东西可以在流程开始时检查应用程序设置,然后它在中途发生变化,您最终可能会无意中改变流程,如无需重新启动完整的应用程序。

有办法解决这个问题吗?

是否有更好的方法来管理应用程序设置,以便您可以一次性远程远程更改一台、几台或所有服务器的应用程序设置?

mar*_*c_s 4

我认为你已经确定了两个主要参与者:

  • 要么您有权访问文件系统,并将所有设置放入大量 *.config 文件中

或者:

  • 您无权访问(或只有非常有限的访问权限)服务器的文件系统,因此您最好将配置设置和用户首选项放入数据库中,基本上只留下磁盘上配置文件的连接字符串

两种方法都有其优点和缺点。我长期以来一直在尝试找到一种从数据库字段“具体化”配置部分的方法,这样我基本上就可以使用配置 XML,但存储在数据库字段中。不幸的是,整个 .NET 2.0 配置系统在很大程度上被“锁定”,并且仅假设数据来自文件 - 无法插入数据库提供程序以允许配置系统从数据库字段读取其内容: -(真的太糟糕了!

我见过的唯一其他方法是Microsoft 提供的StockTrader 2.0 示例应用程序中的“ConfigurationService” ,但对于我的需求来说,它感觉有点矫枉过正,就像一个非常复杂、非常重量级的子系统。