.NET緩衝初步

來源:互聯網
上載者:User
緩衝 .NET緩衝初步ZDNET CHINA|2002-4-24 .NET的cache類可以為微軟輸出工具箱增加許多典型的緩衝功能。在很多開發細節中,cache類可以節約時間,當然它也有很多缺點,比如,要限制一些關鍵字類型。但是,如果使用得當,它還是可以節約時間。本文中,我主要解釋一下如何構造cache,同時,解釋一下在必要時如何構造屬於自己的cache。

Cache基本知識
cache是用來儲存常用資訊的高速儲存空間,使用cache的目的就是要提高系統效能。比如,要開發ASP.NET應用軟體以實現許多使用者所要求的相同產品列表功能,就要用到cache來儲存產品列表。這樣可以防止你重複從資料庫中讀取資訊,否則就要降低系統速度、降低效能。

.NET工具箱外caching
.NET中有一個cache類,位於系統Web caching中,ASP.NET中每一個Web Form object都有一個叫做System.Web.Caching.Cache的cache,這是一個叫做item的預設參數化設定。Item會接收很多參數已確定對象已被插入或提出。問題的關鍵是確定了cache資料。在下面的例子中,關索引值“Alphabet”定義了一個可以放在cache中的長量。利用關索引值可以從cache中恢複長量。

在這種情況下,記住MyClass代表Web Form object

就象例子中看到的那樣,Cache object有item特性。這一特性是object的預設性質,因此在代碼中可以省略。但是這種情況是還存在一定危險性。點擊這裡可以看到代碼中的一些預設設定。

如果想要選取捷徑,可以減少代碼:

MyClass.cache(“Alphabet”) = s

編輯器認為這些代碼都是預設值設定,也就是值為“default”。

一旦這些長量放到cache中,就可以得到下面的值:

s = MyClass.cache (“Alphabet”)

如果想用Web Form外面的值,就可以設定一個新的cache對象,如果正在使用Visual Studio.NET的RTM 版本(Manufacturing 或 Commercial Release),可以用下面的設定:

c = new System.Web.Caching.Cache()

建立完cache之後,就可以使用insert或add命令為其設值,當然,也可以利用get命令從cache中恢複對象。

建立自己的cache
也許你擔心使用微軟的cache會降低系統效能,或者你需要某一關鍵類型的cache而不是一個長量。(這一限制是System.Web.Caching object的一個缺陷),或者你只是出於好奇想做個實驗。

不管什麼原因,你就是想建立自己的.NET cache。首先來看看如何建立最基本的、能夠儲存某些值的cache。在下面的部分裡,將要解釋一些最基本的cache,同時清除一些不必要的功能。

要建立自己的cache,首先要瞭解一下HashTable object。HashTable是System.Collections namespace中的一個collections對象,從概念上來理解,object就像是一個檔案櫃,你可以把object放在檔案櫃中,同時也可以按類別把它們重新恢複回來。Hashtable object允許object插入和恢複。

現在可以定義一個名為CustomCache的新的類,採用HashTable來儲存objects並把它放到cache中,CustomCache有兩種方式:名為insertCachedObject的子程式和名為getCachedObject的函數。插入法可以有兩個參數:key和object,getCachedObject卻只能有一個參數:key(見Listing A)。

CustomCache object中定義了表A所要求的代碼:建立CustomCache object並優先使用它。如果只想建立單一模式的cache,也就是所有的代碼都能採用同一cache,那麼就可以改變Listing B中的object。

注意Listing B中在Hashtable前增加共用關鍵字,比如增加一些方法和構造器。可以增加第二個private構造器來防止代碼建立CustomCache object。現在所有的代碼都共用一個HashTable類而無需建立一個CustomCache。就像Java中靜態關鍵字一樣,共用關鍵字也發揮同樣的功能,.NET中的共用構造器與Java中的靜態模組一樣。

Listing C中的例子是一個採用CustomCache來儲存和恢複長Alphabet量的程式。

現在一個簡單的cache已經完成了。它不能提供在一段時間後自動終止item的功能,同時它也不能實現跟蹤最近使用的objects、caching以及其他使用資料,但是這隻是一個起點。在以後的文章中,我們會進一步討論這一問題以及.NET其它的cache功能。


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。