以前,ASP.NET应用程序的部署设置使用键/值格式存储在Web.config配置部分下的多个配置文件中。出于各种原因,我们正在将这些“站点模块选项”移到数据库中。
以下是我们目前正在考虑的两个选择:
这些听起来是否都是好主意,还是有其他我可能忽略的方法?
发布于 2008-10-21 20:48:24
如果我理解你的建议是正确的。我会做第一种方法。它利用了你已经建造的东西。我将使用哈希表在包装类中缓存,这些类可以为属性提供强类型的接口。
例如:
/// <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(); }
}发布于 2008-10-22 15:41:24
另一种选择是将类似设置分组到它们自己的类中,然后使用XML序列化/反序列化将这些设置类的实例存储和检索到数据库。
除了您自己不需要执行任何类型转换(这是作为序列化/反序列化过程的一部分在幕后完成的)之外,这并没有提供比键/值对更多的优势--所以它仍然会发生。我发现这种方法非常适合解决您所面临的配置问题。它干净,执行迅速,很容易扩展,很容易测试。您不必花时间创建一个特性丰富的API来获取您的设置,特别是如果您已经将配置子类化了。
另外,在不改变序列化/反序列化代码的情况下,您可以将设置从数据库表或文件系统中引导出来(这在开发过程中非常好)。
最后,如果您正在使用Server (可能还有Oracle,尽管我没有使用Oracle和XML的经验),并且考虑预先设计您的设置类,那么您可以为序列化的配置对象实例定义一个XML模式,这样您就可以使用XQuery快速获得配置设置的值,而不必完全反序列化。
发布于 2009-07-19 19:45:17
我们就是这样做的- 单击此处
我们更关心的是,不同的环境(Dev、Test、QA和Prod)对于相同的键具有不同的值。现在,我们只有两个键在一个WebEnvironment.Config文件,从来没有得到提升。第一个键是您所处的环境,第二个键是连接字符串。
该表被加载到字典中一次,然后我们可以在代码中使用它,如下所示:
cApp.AppSettings["MySetting"];https://stackoverflow.com/questions/220031
复制相似问题