本文是這個系列的總結篇,在這篇文章裡,僅從我個人的角度發表一下對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這樣的系統架構適合於應用在數據是動態的,數據量不是很大,但是用戶量很多的系統設計中。