Subtext分析1-前言架构
由于最近要用到一个多用户blog,而我也只会asp。net,比来比去发现只有Subtext才最适合我。oxitex,blogEngine等虽然也不错,不过oxitex功能太过烦杂,而blogEngine是基于xml的单用户程序,改起来性价比太低。blogEngine是以xml为基础,另外也有其他扩展,不过改成多用户比较费时。此外国内也有不少不错的产品比如i-favourite,EnjooSite,同样基于Subtext的EntLib但是多少都由于版权,费用,功能等问题不能使用,我是个人出于兴趣,只选择免费开源:)。其中i-favourite功能最为符合国内用户。另外一个问题就是国内产品的工程质量和性能,真的是不容乐观。下来对Subtext做一个系列的分析,同时也是对于个人工作的一个记录吧。
Subtext是一个基于原.text 博客系统的免费且开源的多人博客发布平台。
看到很多文章的介绍都写的Subtext是单人博客,这里有必要说明下,Subtext是多人博客,其后台就可以看出代有聚合功能。
目前的稳定版本是(.net2.0):Subtext_Release2.1.1.1
最新版本是(.net3.5):Subtext2.2.0.17
项目地址:http://build.subtextproject.com/ccnet/ViewFarmReport.aspx
Subtext的架构非常优秀,主要是有以下几个工程组成
一、Akismet(Automattic Kismet)
Akismet原是WordPress的一个插件,它的作用是帮助你处理垃圾评论和垃圾的trackback、pingback。
当你的博客收到了一个新的评论或trackback或pingback,它会自动调用Akismet web服务,对提交的内容进行审核。对于误报和错报,Akismet同样也进行了处理。
对于个人用户来说,需要到akismet.com上去申请一个Api-Key,再到subtext后台管理上去配置下就可以了。如果你需要托管服务可以到akismet.com申请付费,解决垃圾广告的困扰。
二、BlogML
Blog是在RSS流行以前制订的一个通用标准交换语言,不过现在有了RSS应经很少有用了。不过在Subtext中依然提供对他的支持。
三、Extensibility
Subtext有很多优秀插件,可以为我们提供很多需要的功能。没错,这个模块就是Subtext的插件模块,提供扩展接口。
四、Subtext.Framework
没什么多说的了,看名字就知道是Subtext的框架类了,提供核心业务逻辑的支持,可以说是核心中的核心了。
五、Subtext.Installation
安装类,此工程负责Subtext的安装,在每次页面调用时会调用检测是否安装,如果没安装就由这个类接管。
六、Subtext.Providers.BlogEntryEditor.FCKeditor
额。看到BlogEntryEditor和FCKeditor就知道是编辑器模块了。Subtext提供的强大编辑功能就源于此类,如果要对编辑器做修改和添加额外的上传,附件功能就要修改此类。
七、Subtext.Scripting
脚本类,提供Subtext的SQL 查询脚本查询支持,值得一提的是还支持模板参数。其实现非常轻量,值得一看!
八、Subtext.Web
Subtext的页面层,提供前台的显示页面,由于Subtext是采用模板类的现实方式,此处web类在运行时只是提供一个工具类库、和容器的支持,并不是web页面的作用。
九、Subtext.Web.Controls
Subtext的控件类,将独立的可用复用的控件进行封装,提供给Subtext.Web使用。
十、UnitTests.Subtext
单元测试类,很强大的一个类。提供Subtext单元测试的支持,统一管理Subtext的错误提示等等。
十一、WatinTests
Subtext用户界面UI的自动化测试类。。。。真是只有想不到没有做不到,我以前怎么没想到给自己的程序做自动化测试功能呢?
呵呵,现在已经把Subtex的模块简单的介绍了一下。下面是就是对各模块的详细分析了,由于工作原因更新速度可能不是很快,大概每星期一篇吧。