狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統之家 > 技術開發教程 > 詳細頁面

運用.NET的XML序列化處理系統設置問題

運用.NET的XML序列化處理系統設置問題

更新時間:2024-04-08 文章作者:未知 信息來源:網絡 閱讀次數:

在Web系統開發中,我們經常需要讀取和設置一些系統配置項,常見的例如數據庫連接字符串、上傳路徑等等。

在最初的ASP系統中,比較常用的方法是將值保存為Application或Session變量;在Asp.net系統中,目前比較常見的簡單方法是把相應的配置項寫入Web.Config中,例如

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
...
</system.web>
<appSettings>
<add key="ConnectionString" value="server=(local);database=dbname;uid=username;pwd=password"/>
</appSettings>
</configuration>



然后在程序中通過如下方式讀取

string connString = ConfigurationSettings.AppSettings["ConnectionString"];




這種方法在系統規模較小復雜度較低的時候也不失為一種簡單明了的輕量級方法,不過如果系統較復雜,配置項會較多,同時我們需要按不同模塊對配置進行劃分,并且還希望能以面向對象方法來對其進行封裝,那么如果仍然采用這種過于簡化方式就不太合時宜了。

-----------------------------------------------------------------

下面,我講述一下通過XML類序列化解決系統配置問題的方法。

關于XML類序列化和反序列化(另外一種描述是串行化和并行化)的技術細節,大家可以查看MSDN了解;這里簡單講兩句,XML序列化是把一個對象序列化到XML文檔的過程,反序列化則是從XML輸出中重新創建原始狀態的對象。

直觀表現就是如下圖模式


看了這個圖,就很清楚了,通過序列化,可以采用面向對象的方法,非常自然和方便的讀取和設置系統配置;.NET Framework承擔了對象和XML文件映射工作,我們只需要簡單的使用就OK。下面我們講一下具體內容。

上面圖示已經表明,首先需要一個XML配置文件,格式內容如上圖,具體配置項可以自行增減。

然后我們需要編寫一個類,如上圖所示;特殊的一點,為了使類能夠實現XML序列化,需要在類的所有屬性聲明前添加屬性信息XmlElement,如下所示。

[XmlElement]
public string ConnectionString
{
get { return connectionString; }
set { connectionString = value; }
}



由于AppConfig類本身沒有實現方法,因此我們需要一個配置類AppConfigSetting.cs。類的結構很簡單,只需要兩個靜態方法,Get()獲取AppConfig對象,Save()保存AppConfig對象。

另外,我們需要在 Web.Config中添加該XML配置文件的地址。

<appSettings>
<add key="AppConfigPath" value="/FilePath/file.config"/>
</appSettings>



public class AppConfigSetting
{
//獲取配置對象
public static AppConfig Get()
{
//嘗試獲取緩存中的對象
AppConfig config = (AppConfig)HttpContext.Current.Cache["AppConfig"];
//如果緩存中沒有該配置對象,則直接獲取對象
if (config == null)
{
//新建序列化對象并指定其類型
XmlSerializer serial = new XmlSerializer(typeof(AppConfig));

try
{
string file = HttpContext.Current.Server.MapPath(GetFile());

//讀取文件流
FileStream fs = new FileStream(file, FileMode.Open);

//文件流反序列化為對象
config = (AppConfig)serial.Deserialize(fs);
fs.Close();

//將對象加入到緩存中
HttpContext.Current.Cache.Insert("AppConfig", config, new CacheDependency(file));
}
catch (System.IO.FileNotFoundException)
{
config = new AppConfig();
}
}

return config;
}
//保存配置對象
public static void Save(AppConfig config)
{
string file = HttpContext.Current.Server.MapPath(GetFile());
XmlSerializer serial = new XmlSerializer (typeof(AppConfig));
FileStream fs = new FileStream(file, FileMode.Create);
//對象序列化為文件
serial.Serialize(fs, config);
fs.Close();
}
//獲取配置文件路徑
private static string GetFile()
{
string path = (string)HttpContext.Current.Cache["FilePath"];
if (path == null)
{
path=ConfigurationSettings.AppSettings["AppConfigPath"];
HttpContext.Current.Cache["FilePath"] = path;
}
return path;
}
}




類的使用非常簡單,基本方式如下

//代碼僅為使用演示
AppConfig config = AppConfigSetting.Get();
string connString = config.ConnectionString;
...
config.ConnectionString = connString;
AppConfigSetting.Save(config);



看到這樣的代碼,不禁有令人賞心悅目之感;相對于原來的直接讀取AppSetting,可謂解脫矣! :)


OK,就此結束了。這篇文章只涉及對象序列化的非常簡單的應用,沒有涉及太多的技術原理和細節,大家要深入了解請參考MSDN。

希望文章能對大家有所補益和啟發。 :)

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
蜜臀av国产精品久久久久| 欧美激情视频一区二区三区在线播放 | 94色蜜桃网一区二区三区| 久久国产免费看| 免费不卡在线观看| 久久激情五月婷婷| 久久电影网站中文字幕| 精品在线播放免费| 国产一区二区三区在线观看免费视频| 蜜乳av一区二区三区| 日韩国产高清在线| 精品一区二区在线看| 国产精品综合二区| 成人免费观看视频| 91免费版在线| 一色屋精品视频在线看| 亚洲理论在线| 六月婷婷久久| 欧美日韩你懂得| 2024国产精品视频| 国产精品天干天干在线综合| 中文字幕在线不卡视频| 亚洲午夜精品网| 免费视频最近日韩| 国产精品一二二区| 欧美日韩免费观看一区| 亚洲一区二区动漫| 在线电影院国产精品| 久久综合精品国产一区二区三区| 欧美国产欧美综合| 亚洲综合在线观看视频| 久久草av在线| av动漫一区二区| 亚洲精品影院在线观看| 欧美少妇xxx| 久久久91精品国产一区二区精品 | 亚洲a一区二区| 国产在线乱码一区二区三区| 99re视频精品| 一本一本久久a久久精品综合妖精| 色噜噜狠狠成人中文综合| 日韩视频免费直播| 亚洲美女屁股眼交3| 蜜臀久久99精品久久久画质超高清| 国产91丝袜在线播放0| 亚洲国产精品久久久久婷婷老年 | 亚洲欧美日韩在线观看a三区| 精品视频一区二区三区免费| 欧美国产欧美综合| 青青青伊人色综合久久| 欧美91福利在线观看| 久久久久久久久久码影片| 精品第一国产综合精品aⅴ| 亚洲一区在线看| 成人激情免费网站| 麻豆成人av| 日本一区二区三级电影在线观看 | 国产乱码精品一区二区三区av| 欧美全黄视频| 欧美日韩小视频| 亚洲视频一区二区在线观看| 国产一区二区三区观看| 在线亚洲激情| 久久久久久**毛片大全| 美女在线视频一区| 亚洲免费不卡| 久久天天做天天爱综合色| 精品一区二区精品| 国产欧美日韩一区二区三区在线 | 国产精品国产三级国产普通话蜜臀| 麻豆一区二区99久久久久| 国模大胆一区二区三区| 6080yy午夜一二三区久久| 亚洲图片欧美视频| 国语自产精品视频在线看抢先版结局 | 国产精品乱人伦| 成人性生交大合| 欧美中文字幕一二三区视频| 最新热久久免费视频| 97精品国产露脸对白| 欧美日韩一级片在线观看| 亚洲一区二区三区自拍| 亚洲承认在线| 中文字幕不卡在线| 欧美1区免费| 欧美大片一区二区三区| 国产一区在线视频| 欧美色综合影院| 日韩电影一区二区三区四区| 国产九区一区在线| 亚洲蜜臀av乱码久久精品| 国内精品美女在线观看| 中文字幕免费在线观看视频一区| 国产成人精品亚洲午夜麻豆| 欧美人牲a欧美精品| 奇米综合一区二区三区精品视频| 国产精品免费一区二区三区在线观看 | 亚洲欧美一区二区久久| 韩国在线视频一区| ㊣最新国产の精品bt伙计久久| 欧美日韩国产探花| 中文成人综合网| 国产综合精品| 亚洲精品国产无天堂网2021| 亚洲国产精选| 中文字幕一区二区三区视频 | 欧美激情综合网| 国产精品分类| 亚洲视频精选在线| 亚洲专区欧美专区| 免费一级片91| 欧美一区二区三区四区高清| 国产成人av自拍| 久久久午夜精品理论片中文字幕| 色综合久久综合网| 国产精品国产成人国产三级 | 欧美日韩在线观看一区二区| 激情偷乱视频一区二区三区| 欧美一区2区视频在线观看| 成人av先锋影音| 欧美精彩视频一区二区三区| 激情欧美一区二区三区| 午夜精品福利在线| 欧美美女一区二区三区| 99riav久久精品riav| 综合中文字幕亚洲| 一本大道av一区二区在线播放 | 欧美中文字幕一二三区视频| 国模大尺度一区二区三区| 欧美精品一区二区三区很污很色的| 91在线看国产| 亚洲国产裸拍裸体视频在线观看乱了 | 99久久国产综合精品女不卡| 亚洲天堂2014| 欧美在线视频你懂得| 成人av网址在线| 亚洲精品乱码久久久久久久久 | 亚洲一区二区三区自拍| 欧美一区二区三区白人| 亚洲性图久久| 国产制服丝袜一区| 国产精品午夜在线| 在线免费精品视频| 成人黄色av电影| 亚洲午夜视频在线观看| 日韩欧美国产午夜精品| 夜夜嗨网站十八久久| 国产一二精品视频| 日韩伦理av电影| 欧美肥胖老妇做爰| 99精品国产一区二区青青牛奶| 免费观看一级特黄欧美大片| 国产视频视频一区| 色天使色偷偷av一区二区| 91同城在线观看| 久久精品国产一区二区| 国产精品网友自拍| 91麻豆精品国产91久久久使用方法| 尤物在线精品| 成人小视频在线观看| 亚洲成人第一页| 国产亚洲精品bt天堂精选| 色欧美片视频在线观看| 国产精品地址| 成人激情小说网站| 日韩电影免费一区| 亚洲图片你懂的| 精品国产精品网麻豆系列| 久久久久久国产精品mv| 激情亚洲成人| 欧美成人午夜| 国产一二精品视频| 日本在线不卡视频一二三区| 亚洲日本在线观看| 久久精品一区二区| 在线电影欧美成精品| 久久综合中文色婷婷| 亚洲欧洲精品一区二区| 99久久精品一区| 国产高清不卡二三区| 日韩精品成人一区二区三区| 国产精品乱码妇女bbbb| 精品sm捆绑视频| 91精品久久久久久蜜臀| 欧美亚洲愉拍一区二区| 亚洲综合日本| 夜夜嗨一区二区三区| 欧美视频久久| 99精品1区2区| 91视频在线观看| 99视频精品免费视频| 粗大黑人巨茎大战欧美成人| 极品美女销魂一区二区三区免费| 肉色丝袜一区二区| 亚洲va天堂va国产va久| 亚洲一级二级在线| 午夜电影网亚洲视频| 视频一区视频二区中文字幕| 亚洲成av人综合在线观看| 亚洲午夜精品久久久久久久久|