探索ASP.NET Forum(4)论坛设定

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

今上午过来想看看副forum是怎么处理用户升级的,可是找了快3个小时了还没有发现,郁闷阿,我估计可能这个升级是直接在用户那里完成的,因为我甚至去翻存储过程了,555还有等级在数据库里使用加密字符保存的吗?如是的话,为什么要这么做阿?

说说forum保存设定的办法吧。打开后台可以看到论坛的一些设定都是在一个叶面完成的,包括参数设置、会员设置等,但是可恶的用户登记就是单独的一个叶面,这也表示它的实现确实和其他不同,先不说它。其实认真想想,就应该明白,forum在使用设定的时候是先从数据库中读出信息,然后保存在缓存中,而实际上,确实是这样子。

这段代码是取出数据并保存的实现方法:

static public SiteSettings GetSiteSettings (string applicationName, HttpContext context) {

string siteSettingsCacheKey = "SiteSettings-" + applicationName;

if (HttpRuntime.Cache[siteSettingsCacheKey] == null) {

SiteSettings settings = SiteSettings.GetSiteSettings(applicationName);

HttpRuntime.Cache.Insert(siteSettingsCacheKey, settings, null, DateTime.Now.AddMinutes(settings.SiteSettingsCacheWindowInMinutes), TimeSpan.Zero);

}

return (SiteSettings) HttpRuntime.Cache[siteSettingsCacheKey];

}

从HttpRuntime中得到缓存的引用,因为这些操作并不是在web层进行的。

这段是更新设定的方法:

public void Save()

{

// Save the Site Settings

//

ForumsDataProvider dp = ForumsDataProvider.Instance();

dp.SaveSiteSettings(this);

// This only has affect on single servers. On a web farm

// other servers have to wait until the cache expires

HttpRuntime.Cache.Remove("SiteSettings-" + SiteDomain);

}

在成功保存后就立刻移除缓存 。

上面是实现的方法,在实际应用中,我们来看用户发帖增加积分的例子(对了,用户等级和积分无关,而和用户的发帖数有关,等会我在查查,如有时间的话,因为我想回去看火箭和小牛的第四节)

设定的引用保存在Globals,在使用的时候先取到引用

SiteSettings setting = Globals.GetSiteSettings();

然后就可以使用了

dp.UserUpdateIntegral(user.UserID, setting.IntegralAddThread);

上面是使用设定的基本思路,大家或许会问:为什么我不给出具体的类名和使用的环境呢,我觉得这个的意义不大,尤其是fourm的结构混乱不堪,具体的去找是那个类实现的并没有实际的意义。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航