六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

實(shí)戰(zhàn) .Net 數(shù)據(jù)訪問層 - 16

[摘要]5. Cache Management首先說明一點(diǎn),之所以將Cache Management單列出來,就是為了要說明數(shù)據(jù)緩存的重要性!在很多時(shí)候,這比撰寫Data Access Logi...
5. Cache Management

首先說明一點(diǎn),之所以將Cache Management單列出來,就

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

Access Logic更讓人費(fèi)心,也更令人難以把握。



作者的這個(gè)Cache Management實(shí)現(xiàn)了進(jìn)行Data Cache時(shí)所

必須考慮的幾個(gè)問題,雖然還并不完善,但也可在實(shí)戰(zhàn)中運(yùn)用了!

以下,就是它的結(jié)構(gòu)示意圖:






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

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

Classes!

Manager是總控制臺(tái),所有的調(diào)用全部通過它來完成,對(duì)外

接口也盡可能地表現(xiàn)出一定的簡(jiǎn)潔性。同時(shí),由于Cache

Management一般都在整個(gè)Application Level實(shí)現(xiàn),所以,毫無

疑問的,CacheManager又自動(dòng)成為了一個(gè)Singleton!

從上面的圖中,我們不難發(fā)現(xiàn),CacheManager對(duì)外提供的真

正數(shù)據(jù)訪問方法只有一個(gè):GetCache(另一個(gè)是Singleton訪問,

不算在內(nèi)J)!



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





代碼14:探索CacheManager之GetCache!

public delegate ArrayList GetArrayList();



public class CacheManager

{

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

private static object _currentLocker = new object();



// 用于實(shí)現(xiàn)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);

}

}

...

}































































哇,原來是“騙人”的嘛!這所謂的“一個(gè)方法”居然不是返回object類型,還“振振有詞”地作了一次強(qiáng)制類型轉(zhuǎn)換!

沒錯(cuò),當(dāng)前這個(gè)DAF Solution暫時(shí)只提供針對(duì)ArrayList的Cache Management,而且,如果需要擴(kuò)展為其它類型,在提供重載版本的新GetCache方法之外,還必須提供相應(yīng)的delegate聲明!

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



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



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



主站蜘蛛池模板: 天堂在线最新版www中文 | 日本黄大片 在线播放 | 青草久| 在线亚洲精品中文字幕美乳 | 日韩 欧美 亚洲 | 日韩国产免费一区二区三区 | 亚洲最新永久观看在线 | 又粗又硬又爽的三级视频 | 日韩中文字幕免费观看 | 天天草夜夜骑 | 日韩高清的天堂在线观看免费 | 欧美亚洲第一区 | 有毛片毛毛片毛片毛片 | 伊人三级 | 全部免费国产潢色一级 | 四虎永久免费地址在线网站 | 日本高清视频色www在线观看 | 亚洲第一黄 | 色噜噜网站 | 最新日韩精品 | 色网站综合 | 四虎成人在线 | 日韩美女黄大片在线观看 | 四虎影视在线影院4hu | 在线午夜影院 | 日韩视频免费 | 日本免费看片在线播放 | 日本伊人网 | 在线激情| 一级做a爰片久久免费 | 中文字幕免费在线观看 | 日韩欧美在线综合网高清 | 日韩一区国产二区欧美三区 | 羞羞漫画在线阅读页面漫画入口页面弹窗无限 | 日本精品a在线观看 | 欧美在线视频免费 | 四虎在线永久 | 日韩午夜精品 | 日日影视| 日韩黄色小说 | 亚色网站|