其实昨天发表的的《利用代码读取XML文档》http://mqingqing123.cnblogs.com/archive/2005/10/11/252410.html介绍了如何使用代码读取XML配置。这里谈一下对这种配置使用的看法,纯属个人意见,不保证正确性在那篇文章里其实是对 GetSiteSettings其实就是读取XML文档 public static SiteConfiguration GetSiteSettings() { SiteConfiguration siteSettings = (SiteConfiguration) HttpContext.Current.Cache["SiteSettings"]; // 如果缓存不存在,则读取XML文档 if(siteSettings == null) { siteSettings = new SiteConfiguration(); // 检索XML的实际位置 string configFile = HttpContext.Current.Server.MapPath(ConfigurationSettings.AppSettings["configFile"]); // 赋值 siteSettings.Tab.TabIdColumn.AutoIncrement = true; siteSettings.Module.ModuleIdColumn.AutoIncrement = true; siteSettings.ModuleDefinition.ModuleDefIdColumn.AutoIncrement = true; // Load the XML data into the DataSet siteSettings.ReadXml(configFile); // Store the dataset in the cache HttpContext.Current.Cache.Insert("SiteSettings", siteSettings, new CacheDependency(configFile)); } return siteSettings; } SaveSiteSettings其实就是写入XML文档 public void SaveSiteSettings() { // Obtain SiteSettings from the Cache SiteConfiguration siteSettings = (SiteConfiguration) HttpContext.Current.Cache["SiteSettings"]; // 检测缓存 if(siteSettings == null) { // If SaveSiteSettings() is called once, the cache is cleared. If it is // then called again before Global.Application_BeginRequest is called, // which reloads the cache, the siteSettings object will be Null siteSettings = GetSiteSettings(); } string configFile = HttpContext.Current.Server.MapPath(ConfigurationSettings.AppSettings["configFile"]); // Object is evicted from the Cache here. siteSettings.WriteXml(configFile); } } 请注意:SaveSiteSettings的英文解释,这里没有进行翻译,是读者自己根据英文理解如果Configuration.cs仅仅用ReadXML和WriteXML确实没有多大使用价值,但是他配置了缓存,而且使用了缓存依赖。所以需要说明缓存的优点和缺点优点:提高性能,原因非常简单,不说了确定:不能及时更新页面 ,例如一场运动比赛,可能从始到末一直是0:0,那么当客户端访问服务器页面时,利用缓存,客户更本就不需要更新比赛结果。但是也有可能比赛一直变动,0:1,1:1,这样经常变动的情况也是存在的,在这种情况下,如果你利用缓存,可能比赛已经是10:10了,客户还显示0:0,因此这就是缓存致命的缺点为了解决这个问题,提出了缓存依赖,也就是说缓存的更新依赖与键值或者文件。在Portal里就是利用的是文件依赖,当你更改XML配置文档时,系统就自动清除缓存,然后从新读取配置文件,使得你的配置即使起作用,这种缓存的实现请注意下面的代码 HttpContext.Current.Cache.Insert("SiteSettings", siteSettings, new CacheDependency(configFile)); 基本意义就是SiteSettings缓存依赖文件configFile,只要configFile稍微有点分吹草动,缓存就失效,这样就能够实现及时更新所以,昨天有人说这种读取XML文档的代码没有价值,我感觉是有价值的,主要是这种价值适用在什么地方,并不是任何地方用该方法都好 从Portal看,只所以用这种配置是因为,一个网站可能访问者很多,但是页面的管理并不是一直变动,也就意味者系统并不是经常读取XML,就像你看到www.asp.net,它的框架一直不变,就不需要读取XML配置。注意:你往Portal里加入数据(而不是框架),它是存放在SQL数据库里,这和XML没有关系 相关文章: 2021-07-14 2021-09-13 2021-05-28 2021-06-13 2021-12-06 2022-12-23 2021-11-06
http://mqingqing123.cnblogs.com/archive/2005/10/11/252410.html
介绍了如何使用代码读取XML配置。这里谈一下对这种配置使用的看法,纯属个人意见,不保证正确性
在那篇文章里其实是对
{
SiteConfiguration siteSettings = (SiteConfiguration) HttpContext.Current.Cache["SiteSettings"];
// 如果缓存不存在,则读取XML文档
if(siteSettings == null)
{
siteSettings = new SiteConfiguration();
// 检索XML的实际位置
string configFile = HttpContext.Current.Server.MapPath(ConfigurationSettings.AppSettings["configFile"]);
// 赋值
siteSettings.Tab.TabIdColumn.AutoIncrement = true;
siteSettings.Module.ModuleIdColumn.AutoIncrement = true;
siteSettings.ModuleDefinition.ModuleDefIdColumn.AutoIncrement = true;
// Load the XML data into the DataSet
siteSettings.ReadXml(configFile);
// Store the dataset in the cache
HttpContext.Current.Cache.Insert("SiteSettings", siteSettings, new CacheDependency(configFile));
}
return siteSettings;
}
SaveSiteSettings其实就是写入XML文档
{
// Obtain SiteSettings from the Cache
SiteConfiguration siteSettings = (SiteConfiguration) HttpContext.Current.Cache["SiteSettings"];
// 检测缓存
if(siteSettings == null)
{
// If SaveSiteSettings() is called once, the cache is cleared. If it is
// then called again before Global.Application_BeginRequest is called,
// which reloads the cache, the siteSettings object will be Null
siteSettings = GetSiteSettings();
}
string configFile = HttpContext.Current.Server.MapPath(ConfigurationSettings.AppSettings["configFile"]);
// Object is evicted from the Cache here.
siteSettings.WriteXml(configFile);
}
}
请注意:SaveSiteSettings的英文解释,这里没有进行翻译,是读者自己根据英文理解
如果Configuration.cs仅仅用ReadXML和WriteXML确实没有多大使用价值,但是他配置了缓存,而且使用了缓存依赖。所以需要说明缓存的优点和缺点
优点:提高性能,原因非常简单,不说了
确定:不能及时更新页面 ,例如一场运动比赛,可能从始到末一直是0:0,那么当客户端访问服务器页面时,利用缓存,客户更本就不需要更新比赛结果。但是也有可能比赛一直变动,0:1,1:1,这样经常变动的情况也是存在的,在这种情况下,如果你利用缓存,可能比赛已经是10:10了,客户还显示0:0,因此这就是缓存致命的缺点
为了解决这个问题,提出了缓存依赖,也就是说缓存的更新依赖与键值或者文件。
在Portal里就是利用的是文件依赖,当你更改XML配置文档时,系统就自动清除缓存,然后从新读取配置文件,使得你的配置即使起作用,这种缓存的实现请注意下面的代码
HttpContext.Current.Cache.Insert("SiteSettings", siteSettings, new CacheDependency(configFile));
基本意义就是SiteSettings缓存依赖文件configFile,只要configFile稍微有点分吹草动,缓存就失效,这样就能够实现及时更新
所以,昨天有人说这种读取XML文档的代码没有价值,我感觉是有价值的,主要是这种价值适用在什么地方,并不是任何地方用该方法都好
从Portal看,只所以用这种配置是因为,一个网站可能访问者很多,但是页面的管理并不是一直变动,也就意味者系统并不是经常读取XML,就像你看到www.asp.net,它的框架一直不变,就不需要读取XML配置。
注意:你往Portal里加入数据(而不是框架),它是存放在SQL数据库里,这和XML没有关系