亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

利用XML序列化和Asp.Net Web緩存實現站點配置文件

2019-11-17 01:58:21
字體:
來源:轉載
供稿:網友

利用xml序列化和asp.net Web緩存實現站點配置文件

我們經常會遇到這樣的場景: 今天來了個業務,需要加一個字段,但是考慮的以后可能有變動,需要配成“活”的。 一般最初的做法就是加一個配置到Web.Config文件的AppSettings中去。但是這樣有一個問題,那就是改一下配置節點,AppDomain就需要重啟,很是不爽。 變通一點的會搞出一個xml文件,利用序列化去動態的讀取。但是,哥!每次都讀文件不覺得太耗IO嗎?尤其是使用頻率高話?

下面上代碼吧,懶的廢話了,關鍵地方都注釋了,也不是什么高深的技術:

先來配置文件(注意Config路徑要自己建,代碼沒有處理)和對應的配置文件代碼:

<?xml version="1.0" encoding="utf-8"?><SimpleBizConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">  <ID>12</ID>  <Key>MyKey</Key>  <ListSimple>    <string>簡單</string>    <string>list</string>    <string>集合</string>  </ListSimple></SimpleBizConfig>

using System.Text;using Glutton.Web.Configuration;using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace WebTest.Models{    public class SimpleBizConfig : ISimpleConfig    {        /// <summary>        /// 默認配置文件路徑        /// </summary>        public string GetPath()        {            return "~/Config/SimpleBizConfig.cfg";        }        public string GetCacheKey()        {            return "~/MyConfig_SimpleBizConfig";        }        public SimpleBizConfig()        {            this.ID = 1;            this.Key = "MyKey";            this.ListSimple = new List<string>();        }        public int ID { get; set; }        public string Key { get; set; }        public List<string> ListSimple { get; set; }        internal string Desc()        {            StringBuilder sb = new StringBuilder();            sb.Append("類型:SimpleBizConfig").Append("<br/>");            sb.Append("ID = " + this.ID.ToString()).Append("<br/>");            sb.Append("Key = " + this.Key).Append("<br/>");            sb.Append("list").Append("<br/>");            for (int i = 0; i < this.ListSimple.Count; i++)            {                sb.Append("index:" + i.ToString() + ",value:" + ListSimple[i]).Append("<br/>");            }            return sb.ToString();        }    }}

再來管理配置文件的類:

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Runtime.InteropServices;using System.Text;using System.Threading.Tasks;using System.Web;using System.Web.Caching;using System.Xml.Serialization;namespace Glutton.Web.Configuration{    public interface ISimpleConfig    {        string GetPath();        string GetCacheKey();    }    public class ConfigManager    {        public static T GetConfig<T>() where T : class ,ISimpleConfig, new()        {            T tmpT = new T();            string cacheKey = tmpT.GetCacheKey();            //先嘗試從cache中取數據            T t = GetFromCache<T>(cacheKey);//很郁悶,沒有靜態泛型接口            if (t != null)            {                return t;            }            //cache沒有數據,直接讀配置文件            XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));            string configFilePath = HttpContext.Current.Server.MapPath(tmpT.GetPath());            if (!File.Exists(configFilePath))            {                //文件不存在,初始化,這里需要配置文件類實現默認的初始化動作                using (TextWriter writer = new StreamWriter(configFilePath))                {                    t = new T();                    xmlSerializer.Serialize(writer, t);                }            }            else            {                using (FileStream fs = new FileStream(configFilePath, FileMode.Open))                {                    t = xmlSerializer.Deserialize(fs) as T;                }            }            //存到緩存里面去,依賴web緩存的文件依賴功能實現監控配置文件修改            SetToCache<T>(cacheKey, configFilePath, t);            return t;        }        PRivate static void SetToCache<T>(string cacheKey, string configFilePath, T t) where T : class ,new()        {            HttpRuntime.Cache.Insert(cacheKey, t, new CacheDependency(configFilePath), //文件依賴過期                Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, null);        }        private static T GetFromCache<T>(string cacheKey) where T : class ,new()        {            return HttpRuntime.Cache[cacheKey] as T;        }    }}

看看調用的方法,HomeController里面加了一個測試方法:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using Glutton.Web.Configuration;using WebTest.Models;namespace WebTest.Controllers{    public class HomeController : Controller    {        public ActionResult Index()        {            return View();        }        public ActionResult About()        {            ViewBag.Message = "Your application description page.";            return View();        }        public ActionResult Contact()        {            ViewBag.Message = "Your contact page.";            return View();        }        public string TestCfg()        {            return ConfigManager.GetConfig<SimpleBizConfig>().Desc();        }    }}

看看效果,:-D:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产福利精品在线| 九九久久综合网站| 超碰精品一区二区三区乱码| www.久久久久| 九色91av视频| 成人免费网站在线看| 日韩欧美成人区| 疯狂做受xxxx欧美肥白少妇| 国产精品久在线观看| 久久青草精品视频免费观看| 亚洲欧美激情视频| 精品久久久久久久久久久久| 欧美美女18p| 成人黄色免费在线观看| 国产成人免费av电影| zzijzzij亚洲日本成熟少妇| 另类美女黄大片| 久久99精品久久久久久青青91| 日本成人在线视频网址| 992tv成人免费影院| 97精品一区二区三区| 亚洲jizzjizz日本少妇| 最新国产精品拍自在线播放| 欧美野外猛男的大粗鳮| 日韩免费观看视频| 日韩在线观看免费网站| 久久久久久久国产| 国产精品自产拍在线观| 欧美夫妻性视频| 69av在线播放| 国产精品观看在线亚洲人成网| 91亚洲国产成人精品性色| 在线观看精品自拍私拍| 亚洲一区制服诱惑| 欧美精品免费在线观看| 亚洲另类欧美自拍| 亚洲国产精品小视频| 亚洲午夜激情免费视频| www高清在线视频日韩欧美| 亚洲电影在线看| 亚洲精品电影网站| 欧美性猛xxx| 亚洲欧美在线播放| 热99精品只有里视频精品| 国内精品模特av私拍在线观看| 国产精品一区二区3区| 在线观看国产精品91| 亚洲a成v人在线观看| 成人激情免费在线| 欧美理论电影在线播放| 欧美精品久久久久久久久| 亚洲视频专区在线| 欧美裸体男粗大视频在线观看| 国产亚洲综合久久| 国产一区二区三区视频在线观看| 国产伊人精品在线| 国产精品成久久久久三级| 亚洲国语精品自产拍在线观看| 91精品国产乱码久久久久久久久| 日韩av中文字幕在线| 精品国产精品自拍| 欧美成人在线网站| 欧美激情精品久久久久久久变态| 日韩av网址在线观看| 欧美成人免费一级人片100| 91国产一区在线| 欧美国产日本高清在线| 国产精品香蕉在线观看| 久久在线观看视频| 亚洲日本aⅴ片在线观看香蕉| 精品福利在线视频| 国产精品偷伦免费视频观看的| 国产精品电影一区| 欧美日韩国产在线播放| 久久久天堂国产精品女人| 91香蕉嫩草神马影院在线观看| 成人黄色生活片| 欧美福利在线观看| 2019亚洲男人天堂| 疯狂蹂躏欧美一区二区精品| 欧美大奶子在线| 亚洲视频在线看| 国产欧美久久一区二区| 欧美电影在线观看高清| 日本久久久a级免费| 亚洲在线第一页| 精品久久久久久国产91| 欧美激情在线狂野欧美精品| 久久天堂电影网| xvideos亚洲| 国产v综合ⅴ日韩v欧美大片| 日韩av不卡电影| 亚洲高清不卡av| 国产精品一区二区三区久久| 日韩欧美在线视频免费观看| 国产不卡视频在线| 欧美一级片久久久久久久| 国产福利精品av综合导导航| 欧美日韩性生活视频| 欧美性生交大片免网| 亚洲日韩欧美视频| 亚洲精品中文字幕有码专区| 欧美国产亚洲精品久久久8v| 成人有码在线视频| 亚洲美女中文字幕| 久久久在线视频| 欧美性受xxxx白人性爽| 成人久久久久久久| 国产精品成av人在线视午夜片| 日本人成精品视频在线| 亚洲成人久久网| 久久免费视频这里只有精品| 日韩欧美在线观看视频| 欧美性高跟鞋xxxxhd| 久久精品久久久久电影| 成人www视频在线观看| 88国产精品欧美一区二区三区| 国产精品尤物福利片在线观看| 日韩国产精品亚洲а∨天堂免| 国产v综合v亚洲欧美久久| 日韩精品高清在线| 成人黄色生活片| 久久综合伊人77777蜜臀| 亚洲国产天堂久久国产91| 亚洲国产高清福利视频| 国产精品欧美在线| 亚洲欧洲一区二区三区久久| 国模私拍一区二区三区| 欧美精品久久久久a| 国产精品999999| 成人黄色在线观看| 国产在线日韩在线| 国产欧美日韩丝袜精品一区| 精品国产电影一区| 久久亚洲综合国产精品99麻豆精品福利| 国产97在线|亚洲| 国产999视频| 最近更新的2019中文字幕| 红桃av永久久久| 国产精品久久久久福利| 色黄久久久久久| 欧美成人精品一区| 精品久久久久久久久久久久| 亚洲午夜性刺激影院| 青青青国产精品一区二区| 国产精品∨欧美精品v日韩精品| 久久av.com| 精品久久久久久| 亚洲国产黄色片| 欧美黑人一区二区三区| 久久久亚洲精选| 亚洲va电影大全| 综合欧美国产视频二区| 国内精品一区二区三区四区| 欧美激情免费看| 欧美日韩福利电影| 色偷偷888欧美精品久久久| 欧美在线性爱视频| 日韩麻豆第一页| 亚洲精品之草原avav久久| 亚州精品天堂中文字幕| 欧美成年人视频网站| 中文字幕亚洲精品| 亚洲欧洲黄色网|