虽然做了几个网站,但是一直有个问题困扰我,就是网站配置文件的保存问题,网上有人说保存在数据库,有人说保存在XML中。保存在数据库中是个方便的选择,但是有个问题,每张表都应该有个主键,如果网站在多台服务器上,怎么区分网站(若每个网站有不同配置信息),后面查资料,发觉我的想法是多余的。后来通过对某商城的代码分析,分离出了XML保存配置信息的方法,我看他数据库中也有配置信息,但是网站中始终没找到更新和读取的语句(有点奇怪),以下是分离出的代码
1.读写配置文件
(1)、在BLL中
(1)、在BLL中
View Code
private readonly cmsDal.WebSet dal = new cmsDal.WebSet();/// <summary>/// 读取配置文件/// </summary>/// <param name="configFilePath"></param>/// <returns></returns>public cmsModel.WebSet loadConfig(string configFilePath){return dal.loadConfig(configFilePath);}/// <summary>/// 保存配置文件/// </summary>/// <param name="mode"></param>/// <param name="configFilePath"></param>/// <returns></returns>public cmsModel.WebSet saveConifg(cmsModel.WebSet mode, string configFilePath){return dal.saveConifg(mode, configFilePath);}
(2)、在DAL中
View Code
private static object lockHelper = new object();/// <summary>/// 读取配置文件/// </summary>/// <param name="configFilePath"></param>/// <returns></returns>public cmsModel.WebSet loadConfig(string configFilePath){return (cmsModel.WebSet)SerializationHelper.Load(typeof(cmsModel.WebSet), configFilePath);}public cmsModel.WebSet saveConifg(cmsModel.WebSet mode, string configFilePath){lock (lockHelper){SerializationHelper.Save(mode, configFilePath);//Shannon.Dal.Providers.webSetProvider.SetInstance(mode); }return mode;}
(3)在 基类中
View Code
/// <summary>/// 反序列化/// </summary>/// <param name="type">对象类型</param>/// <param name="filename">文件路径</param>/// <returns></returns>public static object Load(Type type, string filename){FileStream fs = null;try{// open the stream...fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);XmlSerializer serializer = new XmlSerializer(type);return serializer.Deserialize(fs);}catch (Exception ex){throw ex;}finally{if (fs != null)fs.Close();}}/// <summary>/// 序列化/// </summary>/// <param name="obj">对象</param>/// <param name="filename">文件路径</param>public static void Save(object obj, string filename){FileStream fs = null;// serialize it...try{fs = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);XmlSerializer serializer = new XmlSerializer(obj.GetType());serializer.Serialize(fs, obj);}catch (Exception ex){throw ex;}finally{if (fs != null)fs.Close();}}
当然要使用此方法,必须的先写个Model。以上资料来自网上开源代码,仅供学习用,如果大家有好的保存(读取)网页配置信息的方法,请不吝赐教,嘿嘿