程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> BlogEngine.Net架構與源代碼分析系列part3:數據存儲

BlogEngine.Net架構與源代碼分析系列part3:數據存儲

編輯:關於ASP.NET

基於Provider模式的實現

在上一篇文章中,我們主要分析了一下BlogEngine.Net的整體設計,在後半部分我們又對BusinessBase業務對象的狀態維護做了一些比較深入的探討。在這篇文章中我將引領大家完成對BlogEngine.Net中業務對象數據存儲的設計思路與實現細節的分析。

BlogEngine.Net中的數據存儲主要是應用Provider模式實現的,那麼首先讓我們認識一下Provider模式。

Provider模式應該是一種設計模式,是用來解決軟件變化問題的。不過它關注的角度(或者維度)是功能聲明跟功能實現的分離。一般來說,系統對某一功能的需求可能是相對穩定的(比如每個系統都要求對登錄用戶進行驗證,這個需要是相對穩定的),而這個功能的的具體實現卻可以是多樣的(比如,你可以去數據庫裡匹配用戶進行驗證,也可以去一個XML文件裡面去匹配)。Provider模式在.Net類庫的設計中隨處可見,如:MembershipProvider、SiteMapProvider等,它的出現使我們的應用程序有了更大的擴展性,要注意Provider可以是一個數據工廠的提供者,也可以是一個邏輯處理的提供者。在BlogEngine.Net中我們看到的都是數據工廠的提供者,對於邏輯處理的提供者,大家可以參考一下微軟企業庫ApplicationBlock中的加密Block的實現。

在.Net中要實現這種模式是相當的簡單,因為它已經為我們實現了一部分,我們只需實現以下三步即可:

1、定義一個類,抽象出我們所需要的操作,它的基類為ProviderBase

2、實現一個Section,用來從配置文件中讀取Provider的相關配置,該類繼承於ConfigurationSection

3、在調用時去讀取配置文件,並加載指定的Provider

對於BlogEngine.Net中的數據存儲部分我是怎麼看的呢(個人觀點,不必在意)?

BlogEngine.Net可以支持多種數據存儲,在它目前的版本中我們可以看到XML(默認采用,主要是為安裝時即插即用考慮的)和數據庫兩種存儲方式。BlogEngine.Net數據存儲的Provider只是針對數據如何存儲部分(不涉及到一些邏輯處理與運算),所以對於數據庫的要求非常的低,只要支持SQL語句並可以存儲數據就行,實際上它在數據庫中只有一些表,從它的Provider的實現來看並沒有使用數據庫的主鍵級聯刪除等功能,而完全使用多條嵌入式SQL語句完成,這樣做就可以使BlogEngine.Net支持更多的數據庫。對於數據庫的存儲BlogEngine.Net只使用了一個DbBlogProvider,而沒有具體區分到底采用何種數據庫,我們只要在配置文件中根據鏈接字符串設定providerName就可以指定具體的數據庫存儲了。BlogEngine.Net的這種對數據處理方式在業務邏輯很復雜的系統中我並不是很推薦。

那麼再讓我們看看在BlogEngine.Net中是怎樣應用ProviderBase來完成數據存儲問題的。

先看一幅繼承關系圖:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved