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。對於它的實現比較復雜,但是結構還是比較清晰的,有興趣的朋友可以研究一下,這裡就不再做過多說明。