随笔-2  评论-66  文章-13  trackbacks-0
Community  Server,它是用ASP.NET开发的一款著名的开源社区系统。刚开始基于.NET框架1.1开发,后来转到.NET框架2.0,它的版本也从1.1 到2.0、2.1,现在最新版本是Communtiy Server 2007。通过一段时间的学习,终于对这个系统有所了解,所以,想把我的一些学习成果和心得拿出来和大家分享。以后我所有的分析都是基于我最新的学习成果 NetFocus网站,之所以不基于Community Server是因为这个项目内容太杂,对于分析其设计思想不够方便,另外是由于NetFocus网站本身就是完全基于Community Server架构的,并且保留了大部分好的设计思想。关于NetFocus网站源代码可以在我的个人网站上可以下载得到:http://www.netfocus.cn/download.html


第二篇,分析一下CS中整个系统的配置信息是如何配置、如何读取、如何保存的。

整个CS系统中所有的配置信息基本上都存放在communityserver.config文件中,该配置文件中的所有的配置信息的读取和存放都是通过CSConfiguration这个类来实现的。通过以下函数就实现了所有配置信息的读取和存储。

        public static CSConfiguration GetConfig()
        {
            CSConfiguration config = CSCache.Get(CacheKey) as CSConfiguration;
            if (config == null)
            {
                string path = null;
                HttpContext context = HttpContext.Current;
                if (context != null)
                    path = context.Server.MapPath("~/communityserver.config");
                else
                    path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "communityserver.config");

                XmlDocument doc = new XmlDocument();
                doc.Load(path);
                config = new CSConfiguration(doc);
                CSCache.Max(CacheKey, config, new CacheDependency(path));

                CSCache.ReSetFactor(config.CacheFactor);
            }
            return config;

        }

上面的函数先查看缓存中是否存在配置信息,如果存在,则直接从缓存读取。如果不存在,则读取配置文件中的信息,然后讲配置信息放入缓存并设置缓存依赖。最 后返回配置信息。可以看出所有的配置信息的初始化操作都是在这个类的构造函数中进行的。接下来我们看看构造函数做了什么?

        public CSConfiguration(XmlDocument doc)
        {
            XmlDoc = doc;
            LoadValuesFromConfigurationXml();
        }

非常简单,只是把一个包含所有配置信息的xml文档对象保存起来,然后调用函数LoadValuesFromConfigurationXml加载所有的配置信息。该函数也很简单,只是按照顺序一个个读取配置文件中的信息保存在相应的属性或集合中。

需要注意的是,从代码上可以看出,CS的设计人员希望通过一个唯一的入口来访问CSConfiguration这个类,所以使用了GetConfig这个 静态方法,但是并没有私有化这个类的构造函数,这样就意味着我们可以创建任意多个CSConfiguration类的实例。所以,感觉这里就设计的不够严 谨,应该用Singleton设计模式比较稳妥一点。

好了,相信只要你用最多一个小时看一下这个类中的代码,就会对整个CS中的配置信息的读取和保存比较了解了。为今后分析其他功能奠定了基础。
posted on 2008-01-11 18:36 netfocus 阅读(259) 评论(0)  编辑 收藏 网摘 所属分类: Community Server



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1035652




相关文章:

相关链接: