程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Enterprise Library Step By Step系列(九) 緩沖應用程序塊 - 入門篇

Enterprise Library Step By Step系列(九) 緩沖應用程序塊 - 入門篇

編輯:關於.NET

寫在前面:企業庫Step By Step系列的隨筆今天已經是第九篇了,期間得到了很多朋友的支持,他們認為給初學者提供了很好的資料,在這裡表示衷心的感謝。也有朋友反映說關於企業庫使用的文章網上已經有了很多,希望我能寫一些企業庫類設計的文章,我也非常感謝這些朋友提出的建議。我寫本系列隨筆時就是立足於初學者,幫助初學者,希望能夠給他們一些幫助。所以本系列隨筆我還會繼續下去,寫完入門篇和進階篇後,我會寫類設計篇,最後我計劃再寫一篇總結篇的隨筆,作為對企業庫的一個總結,最後再次謝謝大家的關注和支持。

一.緩存應用程序塊概述:

企業庫緩沖應用程序塊提供了一些方便易用的,可擴展的緩沖機制,可讓開發人員將本地緩存集成到其應用程序中。它支持內存緩存和後備存儲(可選),後者可以是企業程序庫數據訪問應用程序塊或獨立存儲方式(Isolated Storage

)。應用程序塊無需修改即可使用,它還可以提供檢索、添加和刪除緩存數據所需的全部功能。可配置的過期時間與清除策略也是應用程序塊的一部分功能。

在構建企業級分布式應用程序時,架構師和開發人員面臨著許多難題。緩存可以幫助您克服其中的一些難題,包括:

性能:通過存儲與數據使用者盡可能接近的相關數據,緩存可以提高應用程序的性能。這樣可以避免重復進行數據創建、處理和傳輸。

可伸縮性:在緩存中存儲信息有助於節省資源,並且可以隨著應用程序需求的增加來提高可伸縮性

可用性:通過將數據存儲在本地緩存中,應用程序可以承受系統的故障,例如網絡等待時間、Web 服務問題以及硬件故障

適用的情況:

(1)必須重復訪問靜態數據或極少更改的數據

(2)在創建、訪問或傳輸方面,數據訪問的開銷很高

(3)即使在源(例如服務器)不可用時,數據也必須始終可用

緩沖應用程序塊可應用於以下任何一種應用程序類型:

Windows 窗體

控制台

Windows 服務

企業服務

ASP.NET Web 應用程序或 Web 服務

應該將緩存應用程序塊部署在單個應用程序域中。每個應用程序域都可以有一個或多個緩存(可以有也可以沒有後備存儲)。緩存不能在不同的應用程序域之間共享。

緩存應用程序塊的性能已優化,並且是線程安全和異常安全的。您可以對它進行擴展,以包括您自己的過期策略和後備存儲。

二.緩沖存儲:

緩沖存儲分為內存駐留型緩沖和磁盤駐留型緩沖。

1.內存駐留型緩沖:

內存駐留型緩沖的典型應用:

應用程序經常使用同樣的數據

一個應用程序經常需要重新獲得數據

2.磁盤駐留型緩沖:

磁盤駐留型緩沖的典型應用:

數據量比較大

同時,從應用服務提供商(例如數據庫)重新獲取數據,開銷比較大

在緩沖的生命周期中,必須經歷系統的重新啟動

三.緩沖的典型使用步驟:

在開始介紹使用之前,我們同樣認為您已經擁有了一個項目和App.config配置文件。

1.運行企業庫配置工具,打開項目配置文件(Web.config或App.config),創建一個Cache Application Block。

2.選擇Application |Caching Application Block |Cache Managers| Cache Manager,這時我們可以看到幾個參數:

ExpirationPollFrequencyInSecond:指過期輪詢周期,就是多長時間就檢查一下有哪些緩存項過期了,由後台獨立進程執行。這個參數很關鍵,如果時間設置的太短,就會使這個後台進程不斷執行,占用大量CPU時間,如果太長,又會浪費內存,要找個不長不短的,推薦用性能計數器監測一下,選一個適中的參數。

MaximumElementsLnCacheBeforeScavenging:緩沖中的最大元素數量。

Name:Cache Manage的名字,可以常見多個Cache Manage,以使用不同的緩沖策略。

NumberToRemoveWhenScavenging:一次移除的數量。

其中2,4兩個參數,我會在進階篇中介紹清除時重點講一下。

3.我們再創建一個基於隔離緩沖Isolated Storage。

4.最後同樣別忘了拷貝目錄。

1copy "$(ProjectDir)\*.config" "$(TargetDir)"

5.添加引用。

1using Microsoft.Practices.EnterpriseLibrary.Caching;
2using Microsoft.Practices.EnterpriseLibrary.Caching.Expirations;
3using Microsoft.Practices.EnterpriseLibrary.Data;

6.添加緩存項。

1/**////先從數據庫中讀取數據,放在了DataReader中
2      Database db = DatabaseFactory.CreateDatabase("Database Instance");
3      IDataReader dr = db.ExecuteReader(CommandType.Text,"Select * from Products");
4
5      this.myDr=dr;
6
7      /**////創建CacheManager
8      CacheManager myCacheManager = CacheFactory.GetCacheManager();
9
10      /**////添加緩存項
11      ///默認清除優先級:Normal
12      ///默認過期設置:No Expiration
13      ///注意:這裡增加的條目的Key為MyDataReader,如果再增加一個同樣Key的條目時,會覆蓋第一個
14      myCacheManager.Add("MyDataReader",this.myDr);

7.讀取緩存項。

在讀取一個緩存項的時候,我們有兩點要特別注意:

(1)在讀取時類型一定要正確,因為在加入緩沖項時類型是由我們自己定的,所以讀取時的類型我們自己也知道;

(2)在讀取時一定要檢查是否為空值,切記!

1/**////類型一定要正確
2      IDataReader toBeDisplay = (IDataReader)myCacheManager.GetData("MyDataReader");
3
4      /**////要判斷是否為空
5      if(toBeDisplay != null)
6      {
7        while(toBeDisplay.Read())
8        {
9          this.listBox.Items.Add(toBeDisplay.GetValue(2));
10        }
11      }

8.移除緩存條目:

利用Remove()方法

1/**////移除條目

2 myCacheManager.Remove("FileKey");

結束語:關於緩存應用程序塊的入門篇介紹就到這裡,希望初學的朋友有所幫助。在進階篇中會介紹基於時間的過期策略和基於提醒機制的過期策略;緩沖存儲的加密;條目的移除;裝載緩沖;刷新緩沖等內容,希望大家關注。

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