日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當前位置:win10系統下載站 > 技術開發教程 > 詳細頁面

實戰 .Net 數據訪問層 - 16

實戰 .Net 數據訪問層 - 16

更新時間:2019-04-27 文章作者:未知 信息來源:網絡 閱讀次數:

5. Cache Management

首先說明一點,之所以將Cache Management單列出來,就

是為了要說明數據緩存的重要性!在很多時候,這比撰寫Data

Access Logic更讓人費心,也更令人難以把握。



作者的這個Cache Management實現了進行Data Cache時所

必須考慮的幾個問題,雖然還并不完善,但也可在實戰中運用了!

以下,就是它的結構示意圖:






從圖中,可以很明顯地看到,這個Cache Management方案

主要由3部分組成:Manager Class,delegate declaration,Parameter

Classes!

Manager是總控制臺,所有的調用全部通過它來完成,對外

接口也盡可能地表現出一定的簡潔性。同時,由于Cache

Management一般都在整個Application Level實現,所以,毫無

疑問的,CacheManager又自動成為了一個Singleton!

從上面的圖中,我們不難發現,CacheManager對外提供的真

正數據訪問方法只有一個:GetCache(另一個是Singleton訪問,

不算在內J)!



Ok,就讓我們先來看看這個GetCache到底做了些什么處理:





代碼14:探索CacheManager之GetCache!

public delegate ArrayList GetArrayList();



public class CacheManager

{

// 用于確保singleton下thread-safe操作的dummy object

private static object _currentLocker = new object();



// 用于實現Singleton的static object

private static CacheManager _current = null;



// 用于存放Windows Application的Cache Data

private Hashtable _htWinAppCache = null;



public ArrayList GetCache(CacheParam param, GetArrayList del)

{

if (param == null)

return del();

else

{

if (IsCacheExpired(param.Name))

return (ArrayList)UpdateCache(param, del());

else

return (ArrayList)RetrieveCache(param.Name);

}

}

...

}































































哇,原來是“騙人”的嘛!這所謂的“一個方法”居然不是返回object類型,還“振振有詞”地作了一次強制類型轉換!

沒錯,當前這個DAF Solution暫時只提供針對ArrayList的Cache Management,而且,如果需要擴展為其它類型,在提供重載版本的新GetCache方法之外,還必須提供相應的delegate聲明!

但是,請您相信,作者如此安排純粹是為了代碼修改和編譯起來更加方便(本文開頭已經聲明,可以通過Visual Studio .NET 2003編譯支持.NET Framework 1.2的代碼),覺無“欺騙”之意J!



上文在講述Data Access Logic時曾經提到Anonymous Delegate,這個新特性雖然只在C# 2.0中才被支持,但好歹有比較簡單的變通方法可以確保您的代碼在C# 1.0 Compiler中編譯通過(請參考代碼11后面的說明)。但是,如果作者一旦在CacheManager中使用Generics(另一個只在C# 2.0才被支持的特性)來完全實現“只有一個GetCache方法”的CacheManager,反向調整起來就非常麻煩(讓其在Visual Studio .NET 2003中編譯通過),所以,在這個版本中就采用了比較“土氣”的方法J,這并不影響我們討論Cache Management的實際功能(有興趣的朋友可以自己去試著用Generics實現CacheManager,但別忘了delegate也必須以Generic的方式進行聲明!另外,delegate之parameter list可以通過聲明“object[]”的方式并結合Reflection技術進行傳遞!)



下一段:http://www.csdn.net/develop/Read_Article.asp?id=27560

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

主站蜘蛛池模板: 欧美成人一区二区三区不卡视频 | 性猛交xxxx乱大交孕妇 | 午夜欧美日韩在线视频播放 | 日韩中文字幕视频在线观看 | 色婷婷99综合久久久精品 | 欧美日韩性视频一区二区三区 | 精品久久久久久免费影院 | 亚洲精品久久婷婷爱久久婷婷 | 中文国产成人精品久久无广告 | 草草浮力影院 | 七次郎成人免费线路视频 | 四虎免费看片 | 免费久福利视频在线观看 | 夜噜噜噜噜噜 | 成人精品一区二区不卡视频 | 国产亚洲99影院 | 伊人久久大香线蕉资源 | 37pao成人国产永久免费视频 | 国产亚洲精品观看91在线 | 成人福利在线 | 久久草综合精品 | 中文字幕一区二区三区在线不卡 | 9277手机在线视频观看免费 | 亚洲高清免费视频 | 亚洲欧美韩国日产综合在线 | 日本午夜影院 | 亚洲精品一区二区三区婷婷 | 国产牛仔裤系列在线观看 | 日日操夜夜操狠狠操 | flypaper未删减手机在线观看 | 久久久久久夜精品精品免费 | 欧美影视一区二区三区 | 永久免费看黄 | 亚洲精品第一区二区三区 | 手机看片日韩高清国产欧美 | 一级特黄aaa大片免费看 | 国产在线观看99 | 成人老司机深夜福利久久 | 成人爱爱| 亚洲国产欧美在线观看 | 国产日韩欧美一区 |