簡體   English   中英

替代web.config中的appsettings(需要持久性)

[英]Alternative to appsettings in web.config (persistance needed)

我目前在我的Web.config中有一些配置變量,例如:

<appSettings>
 <add key="RecipientEmailForNotifications" value="asdf@sdf.com" />
 <add key="NotifyNewEntries" value="true" />
 <!-- etc... -->
</appSettings>

我有一個視圖,管理員用戶可以在線更改此值,例如。

/管理/配置/


通知的收件人電子郵件:[ _ __ _ __ _ __ _ _ ]

通知新條目:[x]是

[保存]

但這種方法存在兩個問題:

  1. 每次部署web.config時,我都會覆蓋那些在線保存的值
  2. 每次Web應用程序重新啟動時(因為Web應用程序在沒有活動時自然停止),在線保存的這些值將重置為上次部署的原始值

所以問題是: 實現這個必須保持配置變量的目標的最佳方法什么?

我認為使用表格不是很自然,但我可能錯了(請解釋原因)。

此外,在閱讀值時使用應用程序設置非常方便:

ConfigurationManager.AppSettings["RecipientEmailForNotifications"]

與使用數據庫相反,

db.SomeConfigurationTable.SingleOrDefault(.....)

我將使用數據庫存儲和緩存的組合。

如果您在單個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;
        }

不要忘記更新設置時需要突發緩存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM