`
ihuashao
  • 浏览: 4546528 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Community Server专题一:概述Community Server

阅读更多

Community Server专题一:概述Community Server

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

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

CommunityServerComponents中包含一些全局业务逻辑类,如:GlobalsContext等、一些接口和用来继承的父类,如:GroupSectionThreadPost等、还有就是实现Membership的实体类。异常处理与Url Rewrite是通过继承IHttpModule接口实现的,当然要实现IHttpModule继承就一定要进行配置,该项目中通过类CSConfiguration实现了一些全局的配置等。HttpHandler也得到了运用,主要是处理一些不存在的Url,如读取用户头像的时候就是使用的HttpHandler。缓存作为Web程序提高运行效率最有效的方法之一在该项目中主要是在CSCache类中,该类没有什么高深的代码主要是对缓存方法进行包装,然后供全局统一管理。

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

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

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

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

CSAsp.net 2.0的关系密切,MembershipLocalizationMasterPageUrl Rewrite这些在Asp.net 2.0中眼熟的词汇在CS中你可以很容易看到它们的实现,不只是运用,你可以通过代码看到它们是如何实现的。

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

分享到:
评论

相关推荐

    CommunityServer概述

    CommunityServer概述,Community Server(CS)是一个非常优秀的Asp.net开源软件,目前官方发布的系统中包括三个部分:Asp.net Forums、DotText、Gallery。

    Docker-CommunityServer:在一处管理文档,项目,客户关系和电子邮件的协作系统

    ONLYOFFICE Community Server是一个免费的开源协作系统,旨在在一个地方管理文档,项目,客户关系和电子邮件通信。 从11.0版社区服务器开始,按照Apache许可的条款作为ONLYOFFICE组分发。 功能性 跨平台解决方案:...

    CommunityServer, 免费开源 Office 套件,具有业务生产力工具.zip

    CommunityServer, 免费开源 Office 套件,具有业务生产力工具 概述ONLYOFFICE社区服务器是一个免费开放源码协作系统,用于管理文档。项目。客户关系和电子邮件。命令行功能跨平台解决方案:Linux,Windows文档管理与...

    Microsoft SQL Server 2005 Express Edition SP3

    如果在更早 Community Technology Preview (CTP) 版本的 SQL Server Express 中禁用了 sp_configure 选项“SMO 和 DMO XP”,则在使用 SAVESYSDB 卸载该早期实例,然后使用 USESYSDB 安装本版本时,将可能无法从命令...

    mysql-group-replication-docker:使用Docker MySQL映像设置组复制

    提取MySQL服务器映像要下载MySQL Community Edition映像,命令是: $ docker pull mysql/mysql-server:tag如果省略:tag,则使用最新标签,并下载最新GA版本MySQL Server映像。 例子: docker pul

    python_client:GridDB Python客户端

    OS: CentOS 7.6(x64) (GCC 4.8.5)SWIG: 3.0.12Python: 3.6GridDB C client: V4.5 CE(Community Edition)GridDB server: V4.5 CE, CentOS 7.6(x64) (GCC 4.8.5)OS: Ubuntu 18.04(x64) (gcc 7.3.0)SWIG: 3.0.12Python...

    数据库原理(第5版)

    第6章概述了数据库管理,构建了一个作为功能数据库的示例数据库,并用作讨论数据库管理需求的示例。本章探讨了并发控制、安全性、备份及恢复技术。数据库管理主题很重要,因为它适用于所有数据库,即使是个人或单...

    social-butterfly-community-night

    此自述文件概述了在此 Ember 应用程序上进行协作的详细信息。 这个应用程序的简短介绍可以很容易地转到这里。 先决条件 您将需要在您的计算机上正确安装以下东西。 (带有 NPM) 安装 git clone 这个仓库 切换到新...

    asp.net知识库

    NET委托:一个C#睡前故事 [推荐] - [原创] Microsoft .NET策略及框架概述 卸载Class? Web Form 窗体 如何实现web页面的提示保存功能 在ASP.Net中两种利用CSS实现多界面的方法 如何在客户端调用服务端代码 页面一...

    LINQ高级编程 7/7

    除了出版图书之外,Scott Klein还为SOL PASS Community Connector撰写半月刊专题文章,并经常在Wrox网站(www.Wrox.corn)和TopXML网站(www.TopXML.com)上发表文章,在SQL Server和.NET用户群里发言。您可以通过...

    LINQ高级编程 2/7

    除了出版图书之外,Scott Klein还为SOL PASS Community Connector撰写半月刊专题文章,并经常在Wrox网站(www.Wrox.corn)和TopXML网站(www.TopXML.com)上发表文章,在SQL Server和.NET用户群里发言。您可以通过...

    LINQ高级编程 1/7

    除了出版图书之外,Scott Klein还为SOL PASS Community Connector撰写半月刊专题文章,并经常在Wrox网站(www.Wrox.corn)和TopXML网站(www.TopXML.com)上发表文章,在SQL Server和.NET用户群里发言。您可以通过...

    LINQ高级编程 5/7

    除了出版图书之外,Scott Klein还为SOL PASS Community Connector撰写半月刊专题文章,并经常在Wrox网站(www.Wrox.corn)和TopXML网站(www.TopXML.com)上发表文章,在SQL Server和.NET用户群里发言。您可以通过...

    LINQ高级编程 4/7

    除了出版图书之外,Scott Klein还为SOL PASS Community Connector撰写半月刊专题文章,并经常在Wrox网站(www.Wrox.corn)和TopXML网站(www.TopXML.com)上发表文章,在SQL Server和.NET用户群里发言。您可以通过...

    LINQ高级编程 6/7

    除了出版图书之外,Scott Klein还为SOL PASS Community Connector撰写半月刊专题文章,并经常在Wrox网站(www.Wrox.corn)和TopXML网站(www.TopXML.com)上发表文章,在SQL Server和.NET用户群里发言。您可以通过...

    LINQ高级编程 3/7

    除了出版图书之外,Scott Klein还为SOL PASS Community Connector撰写半月刊专题文章,并经常在Wrox网站(www.Wrox.corn)和TopXML网站(www.TopXML.com)上发表文章,在SQL Server和.NET用户群里发言。您可以通过...

    mysql-operator:使用Percona服务器的Kubernetes上的防弹MySQL

    MySQL Operator是由工程团队开发的, 是一个智能托管的WordPress托管平台。 有关更多开源项目,请查看。目标和地位该运算符的主要目标是: 在Kubernetes中轻松部署MySQL集群(每服务集群模型) 对开发人员友好...

Global site tag (gtag.js) - Google Analytics