ICANN认证国际域名顶级注册机构
网站建设,域名注册,空间租用,软件销售,广告设计 域名注册,空间租用, 网站建设,东莞网页设计,域名注册,网站推广,网站开发,网页设计 网站推广,,百度推广,新浪推广,雅虎推广,网易推广 标志设计,画册设计,包装设计,VI策划,企业形象顾问 连邦软件加盟店,提供销遥行,管家婆,速达,用友ERP,诺顿等软件报价及销售 建站必读 腾达网络,上网帮助中心, 腾达为东莞等地,提供网站建设,网站推广,广告设计,软件销售等优质服务!
建站必读


 
 
当前位置:首页 -> 建站必读 -> .NET技术
利用.NET的XML序列化解决系统配置问题
在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["F
 
 
本站关键词:
|东莞ERP软件|东莞电脑维护|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计|东莞包装设计|东莞产品目录设计|东莞产品推广策划|东莞VI设计||东莞ERP软件|东莞电脑维护|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计|东莞包装设计|东莞产品目录设计|东莞产品推广策划|东莞VI设计||东莞ERP软件|东莞电脑维护|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计|东莞包装设计|东莞产品目录设计|东莞产品推广策划|东莞VI设计||东莞ERP软件|东莞电脑维护|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计|东莞包装设计|东莞产品目录设计|东莞产品推广策划|东莞VI设计||东莞ERP软件|东莞电脑维护|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计|东莞包装设计|东莞产品目录设计|东莞产品推广策划|东莞VI设计||东莞ERP软件|东莞电脑维护|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计|东莞包装设计|东莞产品目录设计|东莞产品推广策划|东莞VI设计||东莞ERP软件|东莞电脑维护|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计|东莞包装设计|东莞产品目录设计|东莞产品推广策划|东莞VI设计||东莞ERP软件|东莞电脑维护|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计|东莞包装设计|东莞产品目录设计|东莞产品推广策划|东莞VI设计||东莞ERP软件|东莞电脑维护|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计|东莞包装设计|东莞产品目录设计|东莞产品推广策划|东莞VI设计||东莞ERP软件|东莞电脑维护|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计|东莞包装设计|东莞产品目录设计|东莞产品推广策划|东莞VI设计||东莞ERP软件|东莞电脑维护|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计|东莞包装设计|东莞产品目录设计|东莞产品推广策划|东莞VI设计||东莞ERP软件|东莞电脑维护|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计|东莞包装设计|东莞产品目录设计|东莞产品推广策划|东莞VI设计||东莞ERP软件|东莞电脑维护|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计|东莞包装设计|东莞产品目录设计|东莞产品推广策划|东莞VI设计||东莞ERP软件|东莞电脑维护|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计|东莞包装设计|东莞产品目录设计|东莞产品推广策划|东莞VI设计|
域名注册 | 虚拟主机 | 网站建设 | 网站推广 | 广告设计 | 帮助中心 | 软件中心 | 关于腾达
东莞市腾达信息工程有限公司      本站网络实名: 东莞网站建设
地址:东莞市新城市中心区第一国际B座610   邮编:523007
电话:0769-22026071 22026072 传真:0769-22026076 24小时服务热线:13712032014
© 2002~2005 腾达网络   版权所有