• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置: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

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

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 亚洲永久网址在线观看| 成人无码区免费A片视频WWW| 国产jizzjizz免费看jizz| 久久爰www免费人成| 亚洲裸男gv网站| 一级一看免费完整版毛片| 全亚洲最新黄色特级网站 | 真人做人试看60分钟免费视频| 亚洲第一AAAAA片| 精品成人免费自拍视频| 亚洲产国偷V产偷V自拍色戒| 日本视频免费高清一本18| 亚洲影院在线观看| 免费大片黄在线观看yw| 亚洲视频在线观看2018| 日本一区免费电影| 一级黄色片免费观看| 亚洲欧洲美洲无码精品VA | 成人免费看吃奶视频网站| 亚洲日韩AV一区二区三区四区| 女性无套免费网站在线看| 日韩色日韩视频亚洲网站| 久久免费看少妇高潮V片特黄| 亚洲国产精品久久66| 无码国产精品一区二区免费 | 又大又粗又爽a级毛片免费看| 窝窝影视午夜看片免费| 亚洲av永久无码制服河南实里| 亚洲国产成人久久精品软件| 免费一级一片一毛片| a级毛片免费在线观看| 亚洲国产精品毛片av不卡在线| 亚洲高清不卡视频| 香蕉高清免费永久在线视频| 国产免费内射又粗又爽密桃视频 | 黄网站色视频免费观看45分钟| 亚洲大尺度无码无码专区| 国内自产拍自a免费毛片| 特级做A爰片毛片免费看无码| 亚洲成a人片在线观看中文app | 性做久久久久免费观看|