Enterprise Library 2.0 Hands On Lab 翻譯(9):緩存應用程序塊(一)
練習1:使用緩存應用程序塊提高性能
該練習將示范如何使用企業庫中的緩存應用程序塊,并用它提高顯示數據的速度。
第一步
打開EmployeeBrowser.sln 項目,默認的安裝路徑應該為C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Caching\exercises\ex01\begin,并編譯。
第二步 在QuickStarts數據庫中填充數據
運行批處理文件SetCachingHOL.bat,默認的安裝位置為C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Caching\setup。這樣會在QuickStarts數據庫中創建Employees數據表并插入一些測試數據,以及創建相應的存儲過程。默認的數據庫服務器為(local)\SQLEXPRESS,如果需要修改請用記事本打開SetCachingHOL.bat,自行修改。
第三步 回顧應用程序
1.該應用程序主要用來從數據庫讀取并瀏覽雇員的詳細信息,作為應用程序的一部分,還可以瀏覽員工的照片信息。
2.在項目EmployeeBrowser中選擇MainForm.cs文件,選擇View | Code菜單命令并定位到方法MainForm_Load中,窗體類通過EmployeeService獲取數據來顯示,而它使用EmployeeDataProvider來返回數據,如下圖所示:

注意現在EmployeeService僅僅是EmployeeDataProvider的一個委托,我們將會在這里使用緩存應用程序塊。
3.在解決方案管理器中選擇EmployeeDataProvider.cs文件,選擇View | Code菜單命令并定位到GetEmployeePhotoData方法。注意這里對數據庫的訪問做了一秒鐘的延遲。
4.選擇Debug | Start Without Debugging菜單命令運行應用程序。注意到這里在瀏覽雇員的照片時會有一定的延遲。
第四步 在EmployeeService類中實現緩存
1.選擇項目EmployeeBrowser,并選擇Project | Add Reference…菜單命令,在彈出的對話框中選擇Browse項,添加如下程序集。
Microsoft.Practices.EnterpriseLibrary.Caching.dll

2.在解決方案管理器中選擇EmployeeService.cs文件,并選擇View | Code菜單命令。
3.在代碼中添加如下命名空間。
using Microsoft.Practices.EnterpriseLibrary.Caching;4.添加如下代碼到方法GetEmployeePhoto中。
public static Bitmap GetEmployeePhoto(Guid employeeId)
{
byte[] photoData = null;
// TODO: Add Caching of Photo
// Attempt to retrieve from cache
CacheManager cache = CacheFactory.GetCacheManager();
photoData = (byte[])cache[employeeId.ToString()];
// Retrieve from dataProvider if not in Cache
if (photoData == null)
{
EmployeeDataProvider dataProvider = new EmployeeDataProvider();
photoData = dataProvider.GetEmployeePhotoData(employeeId);
cache.Add(employeeId.ToString(), photoData);
}
// No data found.
if (photoData == null)
return null;
// Convert bytes to Bitmap
using (MemoryStream ms = new MemoryStream(photoData))
{
return new Bitmap(ms);
}
}該方法使用工廠模式,創建了一個CacheManager的實例,它可以常駐內存或者存儲于物理存儲上,這取決于你的配置。Items可以通過索引被移除,也可以通過Add方法來增加。
5.添加如下代碼到ClearCache方法中,以便允許窗體來獲取新的數據。
public static void ClearCache()
{
// TODO: Clear Cache
CacheManager cache = CacheFactory.GetCacheManager();
cache.Flush();
}該方法將從緩存中移除所有的條目。
第五步 使用企業庫配置工具
1.使用Enterprise Library配置工具配置應用程序,可以通過開始菜單打開該配置工具,選擇所有程序| Microsoft patterns and practices | Enterprise Library | Enterprise Library Configuration,并打開App.config文件。或者直接在Visual Studio中使用該工具打開配置文件。
2.在解決方案管理器中選中App.config文件,在View菜單或者在右鍵菜單中選擇Open With…,將打開OpenWith對話框,單擊Add按鈕。

3.在Add Program對話框中,設置Program name指向EntLibConfig.exe文件,默認的路徑為C:\Program Files\Microsoft Enterprise Library January 2006\bin,設置Friendly name為Enterprise Library Configuration,單擊OK按鈕。

Visual Studio會把配置文件(App.config)作為一個命令行參數傳遞給EntLibConfig.exe。
4.在Open With對話框中,選中Enterprise Library Configuration并單擊OK按鈕。

第六步 配置應用程序
1.右擊應用程序并選擇New | Caching Application Block。

2.選擇Caching Application Block | Cache Managers | Cache Manager節點,可以通過修改這里的一些設置來提高緩存的性能,暫時先保留默認值。

3.選擇File | Save All保存應用程序配置。
4.在Visual Studio中打開App.config配置文件,現在App.config包含了一些剛才所做的關于緩存的配置,注意到backing store是Null Storage,緩存將存儲在內存中。
第七步 運行應用程序
1.選擇Debug | Start Without Debugging菜單命令運行應用程序,注意觀察瀏覽雇員照片數據性能上的提高。
2.關閉應用程序和Visual Studio。
更多Enterprise Library的文章請參考《Enterprise Library系列文章》
Worktile,新一代簡單好用、體驗極致的團隊協同、項目管理工具,讓你和你的團隊隨時隨地一起工作。完全免費,現在就去了解一下吧。
https://worktile.com



浙公網安備 33010602011771號