狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美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一区二区三区| 精品亚洲欧美一区| 精品电影一区二区三区| 久久一日本道色综合久久| 成人黄色大片在线观看| 精品影视av免费| 亚洲国产一区二区三区 | 亚洲激情另类| 91麻豆国产精品久久| 国产91丝袜在线18| 久久成人久久爱| 蜜桃视频在线观看一区| 亚洲午夜久久久久久久久电影院| 国产精品人成在线观看免费| 色香蕉成人二区免费| 精品久久一区二区三区| 一区二区三区在线观看网站| 久久久不卡网国产精品二区| 洋洋成人永久网站入口| 紧缚捆绑精品一区二区| 欧美三级黄美女| 欧美中文字幕一区二区三区| 久久久噜噜噜久久中文字幕色伊伊| 1000精品久久久久久久久| 免费看日韩a级影片| 91日韩在线专区| 色哟哟一区二区三区| 欧美大片一区二区| 午夜视黄欧洲亚洲| 99久久99久久精品免费看蜜桃| 欧洲一区在线电影| 日韩三级精品电影久久久| 专区另类欧美日韩| 国模大尺度一区二区三区| 国产精品大片| 国产精品裸体一区二区三区| 日韩欧美精品三级| 日韩精品久久久久久| 国产99久久久国产精品潘金 | 亚洲色图欧美激情| 国产一区导航| 狠狠入ady亚洲精品经典电影| 国产精品一区二区三区观看| 国产精品久久久久婷婷二区次| 女女同性精品视频| 欧美日本三区| 性欧美videos另类喷潮| 欧美精品久久久久久久久老牛影院| 日韩女优av电影| 国产精品久久久久久久久动漫| 久久―日本道色综合久久| 亚洲欧洲国产日本综合| 日韩影院精彩在线| 成人午夜av电影| 亚洲福利av| 欧洲亚洲国产日韩| 日韩欧美在线123| 亚洲欧洲无码一区二区三区| 丝袜a∨在线一区二区三区不卡 | 欧美电影免费观看高清完整版在 | 欧美日韩一区二区在线视频| 精品播放一区二区| 亚洲激情成人在线| 国产麻豆精品久久一二三| 午夜日韩在线| 黄色欧美日韩| 欧美精品国产精品| 国产精品久久久久影院| 美国十次综合导航| 欧美久久久久久久| 亚洲电影在线| 欧美日本乱大交xxxxx| 国产精品久久久久影院| 蜜桃视频第一区免费观看| 91丨porny丨在线| 免费精品视频| 国产三级精品视频| 男女视频一区二区| 亚洲午夜精品一区二区| 在线不卡a资源高清| 最好看的中文字幕久久| 国产精品一品视频| 先锋影音一区二区三区| 国产欧美日韩视频在线观看| 久久不见久久见免费视频7 | 欧美性猛片xxxx免费看久爱| 国产精品青草久久| 国产精品综合视频| 国色天香一区二区| 91麻豆精品国产自产在线观看一区 | 久久国产欧美| 久久精品视频网| 国产一区视频导航| 国产一区二区三区免费不卡 | 亚洲乱码一区二区三区在线观看| 欧美日本免费| 中文字幕制服丝袜成人av| 欧美a级一区| 亚洲国产精品t66y| 欧美+日本+国产+在线a∨观看| 日本不卡一区二区| 国产精品久久久一区二区三区| 综合色中文字幕| 亚洲美女色禁图| 一二三区精品福利视频| 国产精品一区二区你懂得| 亚洲成av人**亚洲成av**| 欧美亚洲免费在线| 美国毛片一区二区三区| 欧美日韩精品欧美日韩精品| 国产在线不卡一区| 日韩精品自拍偷拍| 91在线免费看| 亚洲欧洲日韩一区二区三区| 99pao成人国产永久免费视频| 亚洲一区免费在线观看| 色哟哟在线观看一区二区三区| 免费观看在线综合| 制服丝袜在线91| 91网站黄www| 亚洲人亚洲人成电影网站色| 亚洲一区欧美激情| 久久69国产一区二区蜜臀| 精品国产一区二区精华| 国产精品mm| 水蜜桃久久夜色精品一区的特点| 欧美日韩综合不卡| 97久久精品人人爽人人爽蜜臀| 中文字幕一区二区三区av| 亚洲欧美大片| 韩国一区二区三区| 欧美极品aⅴ影院| 亚洲欧美日本日韩| 国产成人午夜电影网| 国产精品伦一区| 久久一二三四| 91亚洲永久精品| 亚洲不卡一区二区三区| 制服丝袜一区二区三区| 一色屋精品视频在线看| 免费三级欧美电影| 日本一区二区电影| 久久综合九色综合久99| 99re视频精品| 日韩高清在线一区| 国产午夜精品久久| 欧美三片在线视频观看| 午夜久久tv| 狠狠狠色丁香婷婷综合激情| 国产精品免费aⅴ片在线观看| 色噜噜狠狠成人网p站| 欧美在线播放| 久久精品国产99久久6| 国产精品久久久久久久久免费相片| 色欧美日韩亚洲| 国精品一区二区三区| 国产真实乱子伦精品视频| 亚洲欧美另类小说| 日韩精品在线网站| 一本大道久久a久久综合| 国产精品hd| 国产不卡视频在线播放| 亚洲第一电影网| 国产欧美日韩另类视频免费观看| 精品视频在线免费观看| 一本色道精品久久一区二区三区| 国产精品99久久久久久似苏梦涵| 亚洲国产精品嫩草影院| 国产精品五月天| 欧美一区二区三区视频免费播放| 亚洲尤物精选| 国产在线视频欧美一区二区三区| 国产精品一区二区黑丝| 免费观看在线色综合| 一区二区三区久久| 欧美高清在线精品一区| 日韩精品在线看片z| 欧美色涩在线第一页| 国产精品视频久久一区| 激情久久久久| 色综合久久综合中文综合网| 国产精华液一区二区三区| 青草国产精品久久久久久| 伊人夜夜躁av伊人久久| 国产精品美女一区二区三区| 久久午夜羞羞影院免费观看| 91精品免费在线| 欧美日韩久久一区二区| 欧美三级乱人伦电影| 一本色道久久综合亚洲精品按摩| 99热在线精品观看| 日韩一区二区精品在线观看| 蜜桃视频一区| 蜜桃av噜噜一区二区三区| 亚洲免费一区二区| 香蕉久久夜色| 久久国产精品久久精品国产| 99riav国产精品| 国产精品一区二区你懂得| 国产精品视频福利|