本文是这个系列的总结篇,在这篇文章里,仅从我个人的角度发表一下对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这样的系统架构适合于应用在数据是动态的,数据量不是很大,但是用户量很多的系统设计中。