上个星期就下了HiForum 2,但是一直没有打开过看,今天下午看了一小会,完全的被晕住了,下面说一下最初的印象,不一定对,仅供参考,以后会不断的学习这个,然后把一些有用的东西集成到我的stella forum中,方便大家一起学习。
打开解决方案后,因为不想用那个passport,所以就删除了一些无关的项目,这样只剩下AspNetForums、Components、Controls、Itelite.Passport.WebServicePorxy、SqlDataProvider这5个项目。
基本的结构
可能是得到的源代码不全,又或者我下的本来就是全部的东西(除了一些第三方组件),我现在看到的基本的结构是这样的:整个表示层的页面大部分是用控件组成的,这些控件应该是些复合控件,然后在控件里面会动态加载一些用户控件,另外还有重写datbind等方法来获得数据,呈现的时候,这些控件内部会调用Components项目的一些方法,涉及到数据处理的最后肯定是用SqlDataProvider。
首页版快的显示
我只看了首页版快的显示,呵呵,说实在的,在数据处理的时候和我的stella的思路差不多。首页是一个大控件ForumGroupView,这个控件里面好象是包了一个Repeater,然后Repeater的数据源是一个ArrayList,这个ArrayList就是保存着版块的资料啦。版快的资料是Components里的某些类提供的,这些类调用的数据处理是Components项目内的一个ForumsDataProvider类。
数据处理
说说上面的数据处理,ForumsDataProvider本身是一个抽象类,而SqlDataProvider项目中的唯一的一个类SqlDataProvider就是继承自它。而Components项目内所有的数据处理调用的是ForumsDataProvider,奇怪吧,原来这个ForumsDataProvider提供了一个Instance方法,用来返回具体的数据处理类,这里我还没看明白,我觉得应该是在这里返回了ForumsDataProvider的一个实例。呵呵,我还没想明白这里这么处理到底是为了什么。
系统内好象也有单纯的数据实体类,另外有的地方直接用了Hashtable和ArrayList。最底层的数据访问是用SqlDataReader。
皮肤的更换
这个系统可以换皮肤,我大致的看了一下,拿首页来说,只一个ForumGroupView,该控件承担了呈现论坛的任务,而它继承自SkinnedForumWebControl,一看名,大家就知道这个父类是用来进行皮肤主题处理的,它在内部主要是先读取当前用户的设置,然后去相应的文件夹加载用户控件。一句话,皮肤的更换实际上是动态的加载不同的用户控件。
其他
还有一个给我印象比较深的是,这个系统有一些类是用来进行环境信息的读取和设置的,比如Components项目内的ForumContext和Globals,ForumContext好象主要是返回一个HttpContext的当前实例,并有一些附加的信息,而Globals类似于一个读取系统信息的工具类,这让我想起了一些提供自助建站服务的程序。
另外,我觉得这个系统的整体设计比较的混乱,首先命名空间就让我摸不到头脑,然后项目内各种各样的类都存在,没有按照功能详细的划分,导致你想找个详细的东西根本就无从下手。代码组织方面,重载用的有些过,呵呵,还有夸张的是SqlDataProvider竟然长达6000多行!
这是我的最初的印象,以后的一段时间还将进一步的学习这个论坛系统。还有,最近迷上了魔兽3冰封王座,这可是我玩的第一个电脑游戏啊~~~