2005-4-26 + 探索ASP.NET Forum(4)论坛设定

今上午过来想看看副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的结构混乱不堪,具体的去找是那个类实现的并没有实际的意义。

posted on 2006-07-05 18:40  Notus|南色的风  阅读(364)  评论(0编辑  收藏  举报