返回“ASP.NET 2.0數據教程目錄”
導言:
正如前面章節所言,緩存ObjectDataSource的數據只需要簡單的設 置一些屬性。然而,它是在表現層對數據緩存,這就與ASP.NET page頁面緩存策 略(caching policies)緊密的耦合(tightly couples)起來。我們對體系機構分層 的原因之一便是打破這種耦合。拿業務邏輯層為例,將業務邏輯從ASP.NET頁面脫 離出來;而數據訪問層將數據訪問的細節ASP.NET頁面脫離出來。從某種意義來說 ,將業務邏輯和數據訪問細節脫離出來是首先,這樣的話使系統更易讀、易維護 、易修改,便於按模塊分工—比如,表現層的開發者對數據庫的細節不甚了 解也不妨礙其開發工作。當然,將緩存策略從表現層脫離出來也有類似的好處。
本文我們將對層次機構進行擴充,新添一個緩存層(Caching Layer,簡稱 CL)以實施緩存策略。該緩存層包括一個ProductsCL類,該類用類似 GetProducts(), GetProductsByCategoryID(categoryID)等方法來訪問產品信息 。調用這些方法時先從內存檢索數據,如果內存為空則調用業務邏輯層BLL裡的 ProductsBLL類的相應方法,再從數據訪問層DAL返回獲取的數據。該ProductsCL 類的方法從業務邏輯層BLL獲取數據後先對數據緩存後再返回。
如圖1所示 ,緩存層CL位於表現層和業務邏輯層。
圖1:在我們的體系結構中緩存層(CL)是單獨的一層
第一步:創 建緩存層的類
在本文,我們創建的緩存層僅僅包含一個ProductsCL類,它 只有幾個方法。
完整的緩存層還應該包含CategoriesCL, EmployeesCL, 和SuppliersCL類。有了業務邏輯層BLL和數據訪問層DAL,緩存層完全可以當成一 個單獨的類庫工程(Class Library project),不過我們將它作為App_Code文件夾 裡的一個類來處理。
為了更好的將緩存層類和DAL類、BLL類區分開,我們 在App_Code文件夾裡創建一個新的子文件夾。在資源管理器裡右擊App_Code文件 夾,選擇“新文件夾”,命名為CL,在裡面添加新類 ProductsCL.cs
圖2添加名為CL的文件夾和名為ProductsCL.cs的類
跟BLL裡的 ProductsBLL類一樣,ProductsCL類應該包含相同的數據訪問和修改方法。不過在 本文,我們只創建GetProducts()方法(在第3步)和GetProductsByCategoryID (categoryID)方法(在第4步)。你可以在空閒的時候對ProductsCL類進行完善,並 創建相應的CategoriesCL, EmployeesCL和 SuppliersCL類