.NET緩存機制探討與比對

作者: charleschen的麥地  來源: 博客園  發布時間: 2010-08-10 09:29  閱讀: 2515 次  推薦: 1   原文鏈接   [收藏]  
摘要:本文介紹了.NET緩存機制的實際價值,并對幾種緩存機制的比對進行了一些分析。合理使用緩存可以大幅度提高應用程序的性能。

  相信大多數開發人員都比較了解緩存了,很多開發人員都在軟件開發中使用了預定義或自定義的緩存,并從中獲得了預期的應用程序的性能提升.這篇和后續文章將詳細的介紹與探討.net體系下的緩存實現的機制,并討論它的優點與缺點.

.NET緩存機制:使用緩存的實際價值

  在kevinhoffman,lonnykruger的書中寫到:開發人員經常需要將數據(臨時數據)臨時存放到一個存儲媒體以便快速訪問.這種臨時數據的存儲器叫做緩存.如果開發人員合理使用緩存,則可以大幅度提高應用程序的性能.

上面是一段完美的關于緩存的定義,就目前而言,迅速而便捷的將數據提供給核心處理代碼已成為一個重要的設計要求。,迅速是為了增強用戶體驗,便捷可以降低系統壓力。而緩存則可以完成任務,雖然不是那么完美。

.NET緩存機制的共同點

  形形色色的緩存機制幾乎都有以下一些主要共同點:

  1.提供數據臨時存儲,緩存數據是否存在具有不確定性。

  2.可以設定緩存優先級。

  3.可以制定緩存依賴,依賴過期則緩存數據不可用。

  4.緩存的核心是MAP

.NET緩存機制比對之探討

  臨時緩存VS持久緩存:

  其實從理論上說微軟.net的緩存解決方案是最完美的緩存的實現,但是正因為其教科書式的實現使得不少程序員們抱怨個不停。一個可能存在的悖論是:千辛萬苦獲得的數據被塞進緩存,因為系統內存緊張而被放棄,雖然它是為了緩解壓力而來。這并不是微軟的問題,而是程序員們貪得無厭的胃口和不當的使用方式所致。

  在很多的開源緩存機制中都采用的持久緩存的方法來實現,其實這些與其說是緩存,我覺得更像是一個增強的session,將緩存的優先級,緩存依賴機制安裝在其上。開發起來既簡單又輕松(.net cache 牽涉了大量底層非托管代碼)。

  內容緩存VS數據緩存:

  內容緩存不是唯一的選擇,數據緩存也不是沒有優點。雖然性能上稍有不足,但是把數據存放在數據庫中卻省去了清理緩存淘寶購物導航的麻煩,。另一個顯而易見的優點是易于負載分配,尤其是我們擁有一個怪獸數據庫服務器時。從實現技術上來說,麻煩的多線程問題也可以方便的轉嫁。在選擇實現內容緩存還是數據緩存,有很多不得不考慮的因素,花落誰家就看所開發的程序所特殊要求了.

  值得重視的依賴:

  .net framework給我們提供了常用的幾個緩存依賴:時間,文件,數據庫。但是由于微軟一貫的作分,我們無法創建新類型的依賴(SqlCacheDependency功能何其何其之弱…)。企業庫自定義依賴是個好主意,我們只需要繼承ICacheItemExpiration接口即可!

1
0
 
標簽:.NET 緩存
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()