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/ 官方站
转载于:https://www.cnblogs.com/wzyexf/archive/2006/04/01/364234.html
Community Server专题一:概述Community Server相关推荐
- Community Server专题五:IHttpHandlerFactory
Community Server专题五:IHttpHandlerFactory<?xml:namespace prefix = o ns = "urn:schemas-microsof ...
- 技术公开课:SQL Server 高可用性解决方案概述(下)
2014年4月10日(周四) 20:30-22:00 [技术公开课]4月10日资深数据库工程师舒永春带来<SQL Server高可用性解决方案概述下篇>精彩课程,SQL Server 高可 ...
- filestream_SQL Server FILESTREAM内部概述
filestream In the article FILESTREAM in SQL Server, we provided a SQL Server FILESTREAM overview wit ...
- SQL Server应用开发概述
SQL Server是新一代的数据库平台,集成了更多.更优秀的功能特性.本章主要对SQL Server概要介绍,主要介绍如何创建数据库.如何管理权限.如何执行备份与恢复. 1 SQL Server简介 ...
- SQL Server查询存储–概述
The SQL Server Query Store is a relatively new feature introduced in SQL Server 2016. It is basicall ...
- sql示例_SQL Server Lead功能概述和示例
sql示例 This article explores the SQL Server Lead function and its usage with various examples. 本文通过各种 ...
- SQL数据库引擎服务SQL Server启动参数概述
In the SQL world, it is an important activity to perform SQL Server installation for a database admi ...
- SQL Server高可用性部署实施 SQL server 群集
SQL Server高可用性部署实施 SQL server 群集 2010-09-27 11:15:23| 分类: 数据库 | 标签:无 |字号大中小 订阅 SQL Server高可用性部署实施 ...
- sql server调试_使用SQL Server扩展事件来调试应用程序
sql server调试 介绍 (Introduction) Often enough, multilayer software has bugs. SQL Server Extended Event ...
- 使用SQL Server更改跟踪创建SQL Server审核
This continuation of our SQL Server auditing series is on SQL Server Change Tracking and will cover ...
最新文章
- 好事也要好做---孔子责子贡
- linux y脚本,Linux中脚本的使用方法
- ED/EP系列5《消费指令》
- 数据结构与算法笔记(十二)—— 查找算法(顺序查找、二分法查找)
- 读取缓存行的伪共享问题
- BAT笔试试题常见试题总结含答案(持续更新。。。)
- Java开发中Netty线程模型原理解析!
- QT实现绘制3D基本形状
- js执行shell命令的几种方式(Node)
- 为Java应用程序加上退出事件处理(ShutdownHook)
- vue+node前后端分离接口调用(初学者)
- mysql8如何迁移_mysql8.0.11数据目录迁移的实现
- cv mat 灰度值和_c++ 访问OpenCV中灰度图像的像素值
- JQuery Ajax 解析
- 让你提前认识软件开发(40):既要写好代码,又要写好文档
- tensorflow之relu
- eclipse 使用svn导入web项目
- 互联网金融的前世、今生和未来-系列三(今生):一场跨界的战争
- ai自动生成字幕软件有哪些?自动生成字幕软件推荐!
- Digester基本用法
热门文章
- Android 设置TextView字体加粗
- android 隐藏手机底部虚拟按键
- 20060427: 部分汉化Together Workflow Editor
- 神经网络中常用的激活函数
- 注册中心—常见注册中心组件对比分析
- Redis 学习笔记-NoSQL数据库 常用五大数据类型 Redis配置文件介绍 Redis的发布和订阅 Redis_事务_锁机制_秒杀 Redis应用问题解决 分布式锁
- spring控制事务:声明式事务(XML)事务的传播行为
- 探讨8.0版本下后台service存活机制及保活
- 多重for循环如何提速
- Python 38 初识数据库