Extension与管理上的实现
从这篇文章开始的连续三篇文章我将向大家展示BlogEngine.Net中的三大开发扩展特性,它们分别是Extension,Widget和Theme。程序员可以在符合一定标准条件下开发自己的扩展,然后将扩展像插件一样(Plug'n play)与BlogEngine.Net进行集成,来达到个性化的应用。本文将详细介绍第一种扩展Extension的开发标准,管理部分介绍等。
声明一下
上一篇文章的回复中有人提到希望我写一下自己的看法和BlogEngine.Net的优缺点等,实际上我想把这些内容放在最后的总结篇里,不过在以后的每一篇文章中我也会或多或少的加入一些。对于这些看法只是我的一己之见,如果您觉得有帮助那更好,如果有不对之处还请指出。
什么是Extension与为什么使用Extension
Extension这个词我很喜欢,具有扩展之意。BlogEngine.Net中的Extension是特指使用了ExtensionAttribute特性标明的类。ExtensionAttribute被定义在BlogEngine.Core.Web.Controls中,继承了.Net中Attribute,内部主要有描述,版本,作者等成员。主要用来标识一个Extension类的信息,以便统一管理模型。BlogEngine.Net中的Extension都被放在了Web站点的App_Code\Extensions或子目录中。它在内部实现时大都是通过静态构造器来监听业务类的消息,并对这些消息提供一些处理。
Extension在BlogEngine.Net中可以做很多事情,例如:纪录业务日志,对文章的词语进行过滤或替换,对业务类活动的统计分析等。总之,写一些Extension会给你的Blog带来很多意想不到的扩展,目前一些开源社区已经有很多对于BlogEngine.Net的Extension的开发,这里有很多下载,感兴趣的朋友可以研究一下。
认识一下BlogEngine.Net已有的Extension
在Web站点的App_Code\Extensions中我们会看到有很多Extension。
Smilies:监听了Comment.Serving,也就是每当有评论被显示(Serving)时,它就会使用Post_CommentServing处理,主要是将评论中一些词语替换成一些图片。
SendPings:这里不再说了,在本系列的第七篇文章中已经做了详细的说明。它主要是发送pingback和trackback信息等。
SendCommentMail:就是每当文章有评论产生时根据配置会向文章作者的邮箱发送评论邮件,功能类似博客园中的评论邮件发送,实现类似Smilies的实现。
ResolveLinks:也就是每当有评论被显示(Serving)时,解决评论中的超链接过长等问题。
BreakPost:实现得很有意思,主要是处理文章显示的[more]问题,这都可以作为扩展,真是绝了。从这里我们也能看出以前的一个疑问,那就是Serving的作用,它主要是处理显示问题的,给[more]加入超链接。
BBCode:似乎是一个在评论显示时,进行字符替换以便按照样式显示的Extension。
CodeFormatter:这是一个第三方开发的对文章中包含的源代码进行格式输出的Extension。对于它的实现比较复杂,但是结构还是比较清晰的,有兴趣的朋友可以研究一下,这里就不再做过多说明。