首页 > 开发 > 综合 > 正文

Community Server专题一:概述Community Server

2024-07-21 02:29:29
字体:
来源:转载
供稿:网友

  community server(cs)是一个非常优秀的asp.net开源软件,目前官方发布的系统中包括三个部分:asp.net forums、dottext、gallery。如果你是某个以cs构架网站的会员,你可以很容易的就拥有一个blog、一个相册、还能在论坛上与他人一起进行讨论,这样就形成一个以user为中心的社区,这也就是起名为community server的意义所在了。

  cs的构架很巧妙,三套原本不同的开源软件在telligent systems的努力下结合在了一起,统一进行用户管理与权限设置(menbership)、统一进行异常处理、统一进行本地化资源管理(多语言实现)等等。虽然这不能完整地看成是portal实现,但是从代码角度看已经非常模块化了,可以快速的进行扩展同时又能获得很好的性能。实现这些主要依靠工程中的两个项目:communityservercomponents与communityservercontrols。

  communityservercomponents中包含一些全局业务逻辑类,如:globals、context等、一些接口和用来继承的父类,如:group、section、thread、post等、还有就是实现membership的实体类。异常处理与url rewrite是通过继承ihttpmodule接口实现的,当然要实现ihttpmodule的继承就一定要进行配置,该项目中通过类csconfiguration实现了一些全局的配置等。httphandler也得到了运用,主要是处理一些不存在的url,如读取用户头像的时候就是使用的httphandler。缓存作为web程序提高运行效率最有效的方法之一在该项目中主要是在cscache类中,该类没有什么高深的代码主要是对缓存方法进行包装,然后供全局统一管理。

  communityservercontrols侧重的是ui表现的业务逻辑,其中包含的很多公用的用户自定义控件,典型的就是editor、resourcelabel,resourcelabel几个项目中的web页面下基本都有他的身影。该项目还有一个重要的目的就是提供skin功能,templatedwebcontrol为forums、blog、gallery几个项目提供skin的基类,当然如果你扩展cs添加自己的项目,也是需要继承templatedwebcontrol,具体如何实现换肤后面会有专题进行单独的介绍,asp.net forums 原来换肤使用的是皮肤的全名(如:skin-postview.ascx),但是在现在的项目中不需要提供全名只在基类中提供“skin-{0}.ascx”,之后用gettype().name得到{0},组合后就是全名了。也就是说只要需要扩展皮肤类的类名和皮肤的{0}名字相同,就可以自动的找到他对应的skin,小小的改进方便了许多。cs使用membership统一用户与权限管理,而用户与权限管理作为所有扩展项目的基础,因此communityservercontrols中实现了membership的ui业务逻辑。

  communityserverforums、communityservergalleries、communityserverblogs就是三个运用项目的实现了,三层结构,通过大量的继承,抽象等等完成的。communityserverguestbook是一个简单的扩展项目,分析代码你会发现其实cs的扩展式非常容易的,而且高效。

  cs在数据库方面也有一些优秀的设计,如全部使用存储过程,很多时候高手都会告诉你,在项目中全部使用存储过程是不理智的,但是cs确这样做。关键一点是他有一个sqlgenerator类和一些xx query类,这些类可以根据要求产生sql text(主要是一些多变的search和post查询),然后这些sql text作为存储过程的参数被传入,最后使用exec执行它得到需要的结果。sql text比起存储过程来的灵活,但容易出现漏洞最后被利用出现sql注入攻击,cs这样的做法一举两得,当然这需要更多的时间去编写代码。还有就是用存储过程实现的数据分页读取等。

  communityserverweb项目是所有webpage html、资源文件、配置文件、js等的集合。该项目本身没有逻辑代码,分析主要是目录的结构与安排。

  cs与asp.net 2.0的关系密切,membership、localization、masterpage、url rewrite这些在asp.net 2.0中眼熟的词汇在cs中你可以很容易看到它们的实现,不只是运用,你可以通过代码看到它们是如何实现的。

  说了很多优点,最后说一下缺点:由于cs的前身是asp.net forums,在目前发布的版本中还可以很容易的看到forums残留的影子,如果不了解其发展的人分析起来一些变量会让你摸不着头脑,另外基础构架部分也有一部分代码与forums跌在了一起,不过我想随着下一个版本,或者下下个版本的发布cs会更有吸引力 ,我是非常希望cs下个版本发布的时候加入webpart等更多的特性。

  你可以通过以下地址下载到源代码:http://communityserver.org/  

  官方站 http://communityserver.cn/    由宝玉发起的中文站

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表