当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > Community Server专题一:概述Community Server

ASP.NET
如何在ASP.NET中使用SmtpMail发送邮件
在VB.NET中利用Split和Replace函数计算字数
Attribute应用:简化ANF自定义控件初始化过程
ASP.NET 2.0移动开发入门之使用样式
ASP.NET 2.0中使用OWC生成图表
ASP.NET 2.0中控件的简单异步回调
一个无法捕获ADO.NET Dataset的内存错误
深入解读ADO.NET2.0的十大最新特性
.Net平台下的分布式缓存设计
ASP.NET全局异常处理浅析
ASP.NET 2.0中文验证码的实现
浅析.NET平台编程语言的未来走向
.net 框架程序设计收藏
使用ASP.NET MVC Futures 中的异步Action
详解.NET中的XmlReader与XmlWriter
关于.NET中的Server push技术
asp.net页面执行机制
对比JSP和ASP.NET的存储过程
.NET 4.0不会包含System.Shell.CommandLine
ASP.NET十个有效性能优化的方法

ASP.NET 中的 Community Server专题一:概述Community Server


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 77 ::
收藏到网摘: n/a

Community Server专题一:概述Community Server
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/ 由宝玉发起的中文站