Azure中的配置管理
最近一直在做項目遷移的工作,由傳統(tǒng)的ASP.NET轉(zhuǎn)到Windows Azure,這里介紹一下Azure的配置管理。在傳統(tǒng)的WinForm或ASP.NET項目下,配置文件為web.config(app.config),而Cloud Service項目的配置文件是*.cscfg。 一個環(huán)境一個配置文件,并且提供可視化編輯。 但這里的配置有一個缺點,目前Azure SDK2.0還不支持多級配置,傳統(tǒng)配置下的appSettings和connectionStrings在這里只有合并了。在保證對現(xiàn)有系統(tǒng)最小影響的改動下,支持Azure的配置只需要引入一個對象CloudConfigurationManager,據(jù)MSDN介紹,CloudConfigurationManager可以智能識別當前運行的環(huán)境,讀取配置對象,也就說:當你的應(yīng)用運行在傳統(tǒng)的本地IIS時,他會讀取Web.config;反過來,當你的應(yīng)用運行在Cloud上,它會讀取cscfg。 既然有了類庫的支持,我們對其封裝一下即可。注意在Azure配置中,appSettings和connectionStrings是同一級的,用CloudConfigurationManager.GetSetting就可以讀到,當然,這時appSettings和connectionStrings的所有配置Key不能有同名的。如果CloudConfigurationManager.GetSetting獲取的Value為空,說明此Key有可能是App(Web).config下面的connectionStrings節(jié)點配置。public static class SettingsManager{/// <summary>/// 獲取Azure或App(Web).config下的配置節(jié)點及連接字符串/// </summary>/// <param name="key"></param>/// <returns></returns>public static string GetSetting(string key){string value = CloudConfigurationManager.GetSetting(key);if (string.IsNullOrEmpty(value)){if (null != ConfigurationManager.ConnectionStrings[key])value = ConfigurationManager.ConnectionStrings[key].ConnectionString;}return value;}}
這樣,一個簡單的配置讀取類就寫好了,將系統(tǒng)中所有讀取配置的方法統(tǒng)一改成SettingsManager.GetSetting(key)即可。本地開發(fā)時,可以拋棄Azure的模擬器(硬件要求高),從而選擇我們較為熟悉本地IIS;Azure用于部署QA/生產(chǎn)環(huán)境/預(yù)部署,一種讀取方式,適應(yīng)兩種場景。 Azure配置支持在線修改,避免使用遠程桌面手動操作。
public static class SettingsManager { /// <summary> /// 獲取Azure或App(Web).config下的配置節(jié)點及連接字符串 /// </summary> /// <param name="key"></param> /// <returns></returns> public static string GetSetting(string key) { string value = CloudConfigurationManager.GetSetting(key); if (string.IsNullOrEmpty(value)) { if (null != ConfigurationManager.ConnectionStrings[key]) value = ConfigurationManager.ConnectionStrings[key].ConnectionString; } return value; } } |
posted on 2014-09-19 13:17 順其自然EVO 閱讀(226) 評論(0) 編輯 收藏 所屬分類: 測試學(xué)習(xí)專欄