日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
.NET4.0緩存功能對比談改進明顯

很多關(guān)于.NET 4.0新特性的介紹,緩存功能的增強肯定是不會被忽略的一個重要亮點。在很多文檔中都會介紹到在.NET 4.0中,緩存功能的增強主要是在擴展性方面做了改進,改變了原來只能利用內(nèi)存進行緩存的局限,允許用戶在不改變代碼的情況下通過修改配置的方式,靈活的切換緩存介質(zhì)。Cache Provider是可擴展的,開發(fā)人員可以方便的將緩存存放在文件中,也可以擴展使用分布式緩存。然而,由于之前已經(jīng)有System.Web.Caching.Cache這個緩存對象的存在,讓我一直對.NET 4.0的新的Cache和原來已存在的System.Web.Caching.Cache的關(guān)系產(chǎn)生了一定的迷惑。通過這一兩天的研究,讓我慢慢解開了這層迷惑。

成都創(chuàng)新互聯(lián)公司是專業(yè)的色尼網(wǎng)站建設(shè)公司,色尼接單;提供網(wǎng)站設(shè)計、網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行色尼網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

回顧.NET 4.0以前的緩存功能

事實上,在.NET4.0以前并沒有存在一個實際意義上的.NET Framework的緩存框架,實際上它是一個專為ASP.NET設(shè)計的緩存框架。在ASP.NET中,緩存分為兩種:輸出緩存(Output Cache)和數(shù)據(jù)緩存。輸出緩存是用在需要對已經(jīng)生成好的頁面HTML或頁面中部分HTML(User Control)進行緩存,減少某些靜態(tài)內(nèi)容的生成次數(shù),從而提高請求響應(yīng)時間。數(shù)據(jù)緩存,是開發(fā)人員希望緩存某些常用、并且極少更新的數(shù)據(jù),讓這些數(shù)據(jù)緩存在內(nèi)存中,以減少數(shù)據(jù)的讀取次數(shù),從而提高程序的性能。而這兩種緩存都是使用System.Web.Caching.Cache來緩存數(shù)據(jù)。

System.Web.Caching.Cache

它是一個內(nèi)存緩存的實現(xiàn),并不提供緩存介質(zhì)的擴展,數(shù)據(jù)直接緩存在內(nèi)存中。這個對象一般情況下,我們不會自己去實例化。通常在頁面里面,我們會直接使用Page.Cache進行緩存操作,而不會去關(guān)心它是如何被實例化的。而在頁面以外的地方要使用緩存,我們可以通過全局的System.Web.Context.Current.Cache來進行緩存操作,同樣的你還可以使用System.HttpRuntime.Cache。其實如果我們通過Reflector去追蹤這幾個對象的關(guān)系,你不難發(fā)現(xiàn)雖然有這么多地方都有Cache對象,實際上它們都是引用同一個對象,那就是HttpRuntime.Cache這個對象。特別要注意的是,System.HttpRuntime.Cache不僅僅可用于Web環(huán)境下,它也可以在任何程序中使用,包括WinForm,Console Application,但是前提是你必須引用System.Web.dll。這也就說明了,System.Web.Caching.Cache這個對象完全是可以脫離于System.Web這個名稱空間,而作為一個獨立的緩存框架而存在。這也是我迷惑的第一個地方:System.Web.Caching.Cache會不會改變現(xiàn)有的實現(xiàn),而直接使用新的可擴展的緩存框架?

.NET 4.0中的緩存功能全解析

.NET 4.0的緩存功功由三部分組成:System.Runtime.Caching,System.Web.Caching.Cache和Output Cache。下面分別對這三者以及它們之前的關(guān)系進行解析:

System.Runtime.Caching

這是在.NET 4.0中新增的緩存框架,存在于程序集System.Runtime.Caching.dll,在這份PPT中提到的System.Caching指的就是它。它是一個可擴展的數(shù)據(jù)緩存框架,內(nèi)置提供了內(nèi)存緩存的實現(xiàn)MemoryCache。但是它在使用上卻不是那么可擴展,除了提供ObjectCache這個抽象類外,并沒有提供可擴展的配置方案,我們無法通過配置方案來切換ObjectCache的實現(xiàn),我們必須在代碼里面硬編碼我們要使用的ObjectCache實現(xiàn):

    
 
 
  1. ObjectCache objectCache = MemoryCache.Default;// 

System.Runtime.Caching.Configuration里面的配置也是針對MemoryCache。這些配置意義在于指定每個MemoryCache實例運行的內(nèi)存使用配額方案,和配額檢查周期。MemoryCache.Default的實例名稱為“Default”,這樣我們就可以通過下面的配置來更改MemoryCache.Default的內(nèi)存配額:

 
 
 
  1.   
  2.    
  3.        
  4.   
  5.       
  6.     
  7.  

緩存過期策略與其它的緩存框架大同小異,與System.Web.Caching.Cache的不同只是名稱不叫CacheDependency,而叫ChangeMonitor,并且提供了基于文件和目錄的緩存依賴策略。

System.Web.Caching.Cache

原先我一直在找答案,System.WebCaching.Cache底層是否改為使用System.Runtime.Caching,得到的結(jié)果是它沒有任何的變化。

Output Cache

Output Cache有了比較大的變化,ASP.NET 4.0之前的版本都是直接使用System.Web.Caching.Cache來緩存HTML片段。在ASP.NET 4.0中對它進行了重新設(shè)計,提供了一個OutputCacheProvider供開發(fā)人員進行擴展,但是它默認情況下,仍然使用System.Web.Caching.Cache來做做緩存。關(guān)于ASP.NET 4.0的Output Cache的使用,請參考ScottGU的文章。

以上,我們可以得出的結(jié)果是,System.Runtime.Caching和Output Cache是可擴展的。并且,他們二者之間沒有任何關(guān)系,提供的擴展接口差別也非常大,需要分別進行實現(xiàn)。System.Runtime.Caching完全可以用于替代Enterprise Library Cache Application Block的作用,并且微軟所發(fā)布的分布式緩存框架Windows Server AppFabric應(yīng)該已經(jīng)提供了System.Runtime.Caching的擴展。

鏈接:http://www.cnblogs.com/hjf1223/archive/2010/07/16/net_4_caching.html


網(wǎng)站標題:.NET4.0緩存功能對比談改進明顯
URL地址:http://m.5511xx.com/article/cdpggpo.html