随笔-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中总体的架构是:核心组件项目Components、通用控件项目Controls、业务应用项目也就是所谓的一个CSApplication(比如 Blog、Forum、Gallery,etc.)、数据访问项目DataProviders、用户管理项目MemberShip、界面UI项目Web。 其中

1:Components提供了整个系统的基础架构:网站配置读取与存储、抽象接口声明、异常处理、用户信息初始化处理、缓存处理、日志记录、资源管理(多语言支持)、用户管理、统一的URL管理、Ajax管理、事件处理、Job处理。

2:Controls提供了整个系统中所有的基类控件或实用控件;另外,由于CS也是采用MasterPage技术的,我为了学习方便,特地把和 MasterPage相关的几个类也放到了Controls项目中,这几个类实现了整个系统中所有页面的显示。总得来说,Controls项目非常简单, 说白了只要理解了TemplatedWebControl.cs这个文件后,其他的所有控件都很容易理解,因为其他的所有控件几乎都是继承自该控件的。

3:CSApplication:一个CSApplication实现了一个社区系统中某个独立的子系统,比如Forum代表社区中的一个论坛子系统、 Blog代表博客子系统、Gallery代表相册子系统;需要注意的是,由于CS在设计时对整个社区系统中所有的东西都做了很好抽象,所以,所有这些子系 统的实现都非常类似,包括文件目录结构和类的实现。因为它们要实现自己的业务逻辑只要继承并重写Components、Controls中的一些已经定义 好的抽象类或基类即可,自己要重写的代码很少。大家看一下我的NetFocus网站的源代码就知道了。

4:DataProviders提供了整个系统的所有的数据库访问操作。这个项目其实也非常简单,因为这个项目中几乎没什么高深的设计,这个项目中所有的 数据访问类中的方法都已经在基类中定义好了,它所做的工作仅仅是重写基类中定义的方法。每个方法里面的实现基本都是连接数据库,指定存储过程,执行存储过 程,返回结果,关闭连接。

5:MemberShip:这个项目就是大家所熟悉的微软的MemberShip,功能就是提供所有和用户、角色相关的操作。本来完全可以直接使用. NET框架2.0中的MemberShip组件,后来我在网上找到了别人破解的版本,所以就拿破解版了,并且整合到了NetFocus网站中。这样的一个 好处就是对于理解和调试代码很方便。

6:Web项目,这个项目也就是大家熟悉的UI界面层。对于这个项目,也许第一次接触的人可能觉得不知如何下手,因为对于这个项目中所有的页面中的内容似 乎你都看不懂,因为东西太少了。你看不到你平时所熟悉的div,td,tr,table等,基本上每个aspx页面中的内容都不会操作30行,而且都是自 定义服务器控件或用户控件。不过不用急,看一遍不懂,多看几遍就会懂了,当你懂了之后,你会发现,其实这个项目最简单,因为所有页面的实现都是一样的: MasterPage+用户控件(或服务器控件),另外,所有控件的后台代码都分离到了对应的CSApplication中或Controls中。其实所 有控件的ascx文件和其对应的cs文件的连接都是在TemplatedWebControl这个类中实现了。后面我还会仔细分析。

好了,上面简单的介绍了CS中最核心典型的几个项目。如果不考虑数据库的情况下,我们就已经确定了需要分离和研究的目标了,那就是: Components、Controls、某个CSApplication、DataProviders、MemberShip、Web,这6个项目也就 是我们未来的网站的基本框架了。也就是说,如果我们的理解是正确的,那应该只要这6个项目就可以把CS运行起来了。要知道真正的CS可不止6个项目哦,起 码也要10个以上。各位看官可以查看一下我的NetFocus网站中的项目结构是否和我说的一致。

到这里,我们知道了CS的总体结构,并且知道了哪些项目是必须的,哪些项目不是必须的。这样,我们就有了更小的范围,学习目标也更加明确了。只要把这6个项目研究一下就行了 ,对吧

最后,再简单的说说数据库中哪些是最重要的,必须要学习研究的。

我总结了一下,必须要清楚知道的表有如下这些:
0:aspnet打头的表
1:cs_Users    用户表
2:cs_Groups   后续讨论
3:cs_Sections  后续讨论
4:cs_Posts、cs_PostAttachments、cs_Posts_InCategories  后续讨论
5:cs_Post_Categories、cs_Post_Categories_Parents  后续讨论
6:cs_Threads  后续讨论
7:cs_ProductPermissions  后续讨论
8:cs_SectionPermissions  后续讨论

我觉得只要完全掌握了以上这些表,就知道了CS中所有关键的数据是如何存放的。这样我们就可以从原本比这些多好多的表中确定出最关键的表,着重分析即可。 而对于存储过程,原本有几百个之多,而现在我们也只要关注和这几个表相关的存储过程即可。具体NetFocus中的表和存储过程各位看官打开实际的数据库 一看就应该很清楚了。

在接下来的文章中,我把上面提到的每个项目和表做详细的分析,分析每个项目中最重要的东西的设计与实现,在这个过程中也会对相关的表和存储过程进行讨论。我想只要我们真正掌握了这六个项目和所有这些表,那我们也就拥有了一套比较不错的属于自己的灵活的网站框架了。
posted on 2008-01-11 18:35 netfocus 阅读(432) 评论(0)  编辑 收藏 网摘 所属分类: Community Server



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

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

0 1035651




相关文章:

相关链接: