我目前在Web.config中有一些配置变量,例如:
<appSettings>
<add key="RecipientEmailForNotifications" value="asdf@sdf.com" />
<add key="NotifyNewEntries" value="true" />
<!-- etc... -->
</appSettings>
我有一个视图,管理员用户可以在线更改此值,例如
/管理/配置/
通知的收件人电子邮件: [ _ __ _ __ _ __ _ _
通知新条目: [x]是的
[SAVE]
但这种方法存在两个问题:
所以问题是: 实现必须保留配置变量的目标的最佳方法是什么?
我认为使用表格不是很自然,但我可能错了(请解释原因)。
此外,在阅读值时使用应用程序设置非常方便:
ConfigurationManager.AppSettings["RecipientEmailForNotifications"]
与使用数据库相反,
db.SomeConfigurationTable.SingleOrDefault(.....)
答案 0 :(得分:2)
我将使用数据库存储和缓存的组合。
如果您在单个Web服务器上,则可以将设置存储在proc缓存中。如果您在Web场中,可以查看couchbase(免费memcached)或azure之类的内容。
在应用程序启动时加热缓存可能是有意义的。这是从数据库中读取设置并填充缓存。
另一种流行的方法是进行一次Get调用,首先检查缓存,如果缓存是空的,则填充缓存,例如。
public string Get(string key, Func<string> getItemCallback)
{
var item = Cache.Get(key) as string;
if (item == null)
{
item = db.SomeConfigurationTable.SingleOrDefault(key);
Cache.Store(key, item);
}
return item;
}
不要忘记更新设置时需要突发缓存。