首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最佳ASP.NET ConfigSection到DB模式

最佳ASP.NET ConfigSection到DB模式
EN

Stack Overflow用户
提问于 2008-10-20 21:32:14
回答 3查看 293关注 0票数 1

以前,ASP.NET应用程序的部署设置使用键/值格式存储在Web.config配置部分下的多个配置文件中。出于各种原因,我们正在将这些“站点模块选项”移到数据库中。

以下是我们目前正在考虑的两个选择:

  1. 将applicationId、moduleId和key作为主键的单个表,其中包含一个值字段。Pros:
  • 这将模拟文件访问。
  • 在哈希表/值objects.Cons:中选择要缓存的整个部分很容易
  • 更难更新,因为每个键都需要单独更新。
  • 如果不是字符串,则必须强制转换每个值。
  1. 将存储过程、类等分开的每个部分的各个表。Pros:
  • 由于输入了列和对象类型,所以数据保证是一致的。
  • 更新是通过显式interface.Cons:在一次访问数据库时完成的。
  • 必须更改应用程序接口以访问
  • 每次更改时都必须更新对象、数据库表和存储过程。

这些听起来是否都是好主意,还是有其他我可能忽略的方法?

EN

回答 3

Stack Overflow用户

发布于 2008-10-21 20:48:24

如果我理解你的建议是正确的。我会做第一种方法。它利用了你已经建造的东西。我将使用哈希表在包装类中缓存,这些类可以为属性提供强类型的接口。

例如:

代码语言:javascript
复制
/// <summary>
/// The time passwords expire, in days, if ExpirePasswords is on
/// </summary>
public int PasswordExpirationDays {
    get { return ParseUtils.ParseInt(this["PasswordExpirationDays"], PW_MAX_AGE);}
    set { this["PasswordExpirationDays"] = value.ToString(); }
}
票数 1
EN

Stack Overflow用户

发布于 2008-10-22 15:41:24

另一种选择是将类似设置分组到它们自己的类中,然后使用XML序列化/反序列化将这些设置类的实例存储和检索到数据库。

除了您自己不需要执行任何类型转换(这是作为序列化/反序列化过程的一部分在幕后完成的)之外,这并没有提供比键/值对更多的优势--所以它仍然会发生。我发现这种方法非常适合解决您所面临的配置问题。它干净,执行迅速,很容易扩展,很容易测试。您不必花时间创建一个特性丰富的API来获取您的设置,特别是如果您已经将配置子类化了。

另外,在不改变序列化/反序列化代码的情况下,您可以将设置从数据库表或文件系统中引导出来(这在开发过程中非常好)。

最后,如果您正在使用Server (可能还有Oracle,尽管我没有使用Oracle和XML的经验),并且考虑预先设计您的设置类,那么您可以为序列化的配置对象实例定义一个XML模式,这样您就可以使用XQuery快速获得配置设置的值,而不必完全反序列化。

票数 0
EN

Stack Overflow用户

发布于 2009-07-19 19:45:17

我们就是这样做的- 单击此处

我们更关心的是,不同的环境(Dev、Test、QA和Prod)对于相同的键具有不同的值。现在,我们只有两个键在一个WebEnvironment.Config文件,从来没有得到提升。第一个键是您所处的环境,第二个键是连接字符串。

该表被加载到字典中一次,然后我们可以在代码中使用它,如下所示:

代码语言:javascript
复制
  cApp.AppSettings["MySetting"];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/220031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档