BlogEngine.Net架构与源代码分析系列part15:总结篇

时间:2021-06-26 03:57:17

     本文是这个系列的总结篇,在这篇文章里,仅从我个人的角度发表一下对BlogEngine.Net的一些看法。内容包括BlogEngine.Net的优缺点,性能问题,如何阅读源代码等。

     重申一下写这个系列的目的

1.使自己更加深入的理解BlogEngine.Net的架构,对BlogEngine.Net的代码能够更深刻的掌握。
2.给那些想学习BlogEngine.Net的源代码,但是不知道从何开始或者比较迷茫的朋友们一个学习指南。
3.在博客园上永远的保存下来,方便你我查看。因为这方面的资料实在太少了。

     关于如何阅读源代码

     其实BlogEngine.Net的注释已经很清晰了,但是由于它确实很大,很强壮,我在学习它的源代码时还是走了不少弯路,曾经放弃过很多次,不过最后还是找到了感觉。BlogEngine.Net的最大特点就是麻雀虽小,五脏俱全,从使用上看不到太多,但是它里面的东西真是很经典,设计和实现得很漂亮。我个人觉得我们在研究它时只要坚持以下几点就行了:
1.按照文章的顺序一块一块的研究:这个系列的写作顺序就是我觉得最佳的学习路线。
2.坚持住整体把握,细致入微的原则。也就是对它的源代码该宏观考虑的时候就要宏观考虑,该细细推敲的时候就要细细推敲。看代码时首先看看这段代码大概是做什么的,之后再去一行一行的看。对于弄不明白的地方,可以先放在一旁,以后你自然会知道的。
3.对于不确定的部分要一边调试一边看,就是F10,F11这样看。

     关于BlogEngine.Net的性能问题的一点看法

     BlogEngine.Net最初是一个单人博客,目前支持多人写博客,但是和cnblogs这种社区博客还是有大区别的。其实我觉得BlogEngine.Net的市场定位也就是使用托管服务的单人博客系统。从它的实现代码中我们可以看出对于Post等的处理方式是从持久存储设备完全填充到内存中的对象,评论中有的朋友提出这样处理的内存膨胀问题。其实我的看法是这样的,像BlogEngine.Net这种市场定位的Blog系统中的Post再多也多不到哪去,Post中等存储的都是纯文本,对于图片,文件等大资源还是存储在磁盘上的,这样的需求完全可以满足。再者BlogEngine.Net支持导出备份,我们完全可以在一定情况下将一些Post文本部分导出成BlgoXML格式存储起来,之后删除一些Post,但是那些图片等依然保存不动,这样HttpHandler处理时依然有效。那么BlogEngine.Net这样处理业务对象带来了什么好处呢?我觉得主要有以下两点:

1.控制上的灵活,数据的控制完全交给了业务对象,数据库等只是一个持久存储功能。

2.性能上的提升,BlogEngine.Net的那种搜索方式只能使用这样的业务对象数据处理方式才可以满足。

所以BlogEngine.Net在大用户量下的优势我觉得就会很明显,这也是这样的博客系统所需求的。我觉得像BlogEngine.Net这样的系统架构适合于应用在数据是动态的,数据量不是很大,但是用户量很多的系统设计中。

     BlogEngine.Net的特性和优缺点

     关于BlogEngine.Net的特性,大家可以参照一下官方的说明,表格上说明的很全,大家在阅读源代码时可以参照它,如果您弄清楚了所有这些特性的源代码,你实际上也就掌握了它。对于BlogEngine.Net的优缺点总结也都是我自己的个人看法,仅供参考,也欢迎大家讨论。

值得参考:
1.支持很多现有的XML标准格式,例如BlogXML,Apml,Rss等。
2.架构设计得很好,利用了很多面向对象设计的特性。很多地方使用了继承。
3.最大限度的利用了.Net Framework已有资源,例如Provider等。
4.很好的利用了C#的语言特性,例如泛型,特性等。
5.正则表达式,缓存等大量应用。
6.开发扩展的设计部分。Extension,Widget等扩展模型。
7.自定义的HttpHandler和HttpModule应用得很合适。
8.部分代码实现应用到了几个典型的设计模式带来了更好的解决办法。
9.Ajax的使用也很合适,达到了一定的页面效果。
10.代码分隔的很好,结构很清晰。

......


不推荐部分:
1.ExtensionManager部分还有待完善(前面有一篇文章提及过)。
2.Ajax在线预览有些地方不够完美(上文也提及过)。
行了,给BlogEngine.Net点面子,就先说这两点吧,实际上也想不出来了,因为我觉得它真是太完美了,也可能是我见识短吧。BlogEngine.Net的团队很优秀。

     结束语

     第一次写系列的文章,以前单篇文章也很少发布,现在知道写文章很不容易啊!最主要的是我的这个系列文章能给大家带来收获,哪怕一点点,我就会很高兴。

     博客园是一块圣地,我把我两周以来收获的果实种在这块圣地上,希望能给匆匆茫茫的过客带来一点收获。

     最后一句话:BlogEngine.Net真的是一件好东西!

     本系列完!祝大家学习愉快,工作顺利!

     上一篇:BlogEngine.Net架构与源代码分析系列part14:实现分析(下)——网站页面上值得参考的部分

 

     返回到目录