c#緩存介紹.doc_第1頁
c#緩存介紹.doc_第2頁
c#緩存介紹.doc_第3頁
c#緩存介紹.doc_第4頁
c#緩存介紹.doc_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

c#緩存介紹緩存主要是為了提高數(shù)據(jù)的讀取速度。因為服務(wù)器和應(yīng)用客戶端之間存在著流量的瓶頸,所以讀取大容量數(shù)據(jù)時,使用緩存來直接為客戶端服務(wù),可以減少客戶端與服務(wù)器端的數(shù)據(jù)交互,從而大大提高程序的性能。本章從緩存所在的命名空間“System.Web.Caching”開始,詳細介紹框架提供的緩存類和操作方法,主要涉及簡單數(shù)據(jù)的緩存、數(shù)據(jù)緩存依賴和數(shù)據(jù)庫緩存依賴三個技術(shù)要點,最后演示一個完全使用緩存實現(xiàn)數(shù)據(jù)讀取的實例。講解流程如圖16-1所示。:圖16-1 緩存命名空間的講解流程16.1 System.Web.Caching簡介本節(jié)從緩存命名空間的總體簡介和組成結(jié)構(gòu)入手,從整體上對System.Web.Caching進行概述。16.1.1 System.Web.Caching概述System.Web.Caching是用來管理緩存的命名空間。緩存就是將服務(wù)器端的數(shù)據(jù)暫時保存在客戶端,方便用戶的讀取。緩存命名空間的父級空間是“System.Web”,由此可以看出,緩存通常用于Web網(wǎng)站的開發(fā),包括在B/S項目中的開發(fā)。緩存的設(shè)計主要是考慮到網(wǎng)絡(luò)帶寬可能會延緩數(shù)據(jù)的提交和回發(fā),如果將數(shù)據(jù)保存在客戶端,用戶可以直接從客戶端讀取數(shù)據(jù),這樣數(shù)據(jù)就是從本地提取的,不會再受網(wǎng)絡(luò)的影響。System.Web.Caching命名空間提供與緩存有關(guān)的所有操作類,具體包括哪些類將在下一節(jié)詳細介紹。16.1.2 System.Web.Caching命名空間內(nèi)的類組成緩存命名空間主要提供三種操作:緩存數(shù)據(jù)對象、對象的緩存依賴和數(shù)據(jù)庫的緩存依賴。其中緩存任何對象都使用一個類Cache,但當(dāng)緩存發(fā)生改變時,普通對象和數(shù)據(jù)庫對象的依賴處理不同。圖16-2羅列的是在三層結(jié)構(gòu)中緩存的部署情況。兩個依賴類CacheDependency和SqlCache Dependency主要更改發(fā)生變化的緩存數(shù)據(jù),起到通知的作用。當(dāng)數(shù)據(jù)沒有被緩存時,使用Cache類進行添加。下面根據(jù)圖16-2的部署,來介紹圖中使用的緩存類。這些類的說明如表16-1所示。圖16-2 三層結(jié)構(gòu)中緩存的部署圖表16-1 緩存命名空間中的類及其說明類 名說 明Cache對緩存對象的編輯類,其操作包括緩存的增、刪、改CacheDependency基本緩存對象的依賴,當(dāng)基本對象發(fā)生變化時,更新緩存內(nèi)容SqlCacheDependency數(shù)據(jù)庫緩存對象的依賴,當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)變化時,更新緩存內(nèi)容16.2 管理緩存的類:Cache類Cache類用來存儲數(shù)據(jù)對象,并提供方法對這些對象進行編輯。本節(jié)主要介紹Cache類包含的方法,以及如何使用這些方法實現(xiàn)數(shù)據(jù)對象的緩存。16.2.1 功能說明Cache類屬于字典類,其根據(jù)一定的規(guī)則存儲用戶需要的數(shù)據(jù),這些數(shù)據(jù)的類型不受限制,可以是字符串、數(shù)組、數(shù)據(jù)表、Dataset和哈希表等。使用Cache類的優(yōu)點是當(dāng)緩存的數(shù)據(jù)發(fā)生變化時,Cache類會讓數(shù)據(jù)失效,并實現(xiàn)緩存數(shù)據(jù)的重新添加,然后通知應(yīng)用程序,報告緩存的及時更新。16.2.2 語法定義Cache類的語法定義如下:public sealed class Cache : IEnumerable通過其定義可以發(fā)現(xiàn),Cache類是“sealed”定義的類,表示此類被密封,不能被繼承。同時Cache類還繼承了IEnumerable接口,表示允許對集合中的數(shù)據(jù)進行枚舉操作。緩存的生命周期隨著應(yīng)用程序域的活動結(jié)束而終止,也就是說只要應(yīng)用程序域依然處于活動狀態(tài),緩存就會一直保持,因為每個應(yīng)用程序域都會創(chuàng)建一個緩存實例。此實例的信息通過HttpContext對象的Cache屬性或Page對象的Cache屬性獲取。下面的代碼演示如何將數(shù)組數(shù)據(jù)添加到緩存中:ArrayList myarray = new ArrayList(); /創(chuàng)建數(shù)組數(shù)據(jù)myarray.Add(1.學(xué)習(xí)園地);myarray.Add(2.交流論壇);myarray.Add(3.幫助);Cache.Add(Category, myarray); /將數(shù)組添加到緩存中16.2.3 方法詳解Cache類的方法主要提供對緩存數(shù)據(jù)的編輯操作,如增、刪、改等。其中最常用的方法及其說明如表16-2所示。表16-2 Cache類的主要方法及其說明名 稱說 明Add將數(shù)據(jù)添加到Cache對象Insert向Cache中插入數(shù)據(jù)項,可用于修改已經(jīng)存在的數(shù)據(jù)緩存項Remove移除Cache對象中的緩存數(shù)據(jù)項Get從Cache對象中獲取指定的數(shù)據(jù)項,注意返回的是Object類型,需要進行類型轉(zhuǎn)換GetType從Cache對象中獲取數(shù)據(jù)項的類型,判斷數(shù)據(jù)類型后,方便進行轉(zhuǎn)換GetEnumerator循環(huán)訪問Cache對象中的緩存數(shù)據(jù)項。注意其返回類型是“IDictionaryEnumerator”技巧:要想修改緩存數(shù)據(jù),只需要重新為緩存賦值即可。最需要注意的是Add方法,其使用語法如下:public Object Add (string key,Object value,CacheDependency dependencies,DateTime absoluteExpiration,TimeSpan slidingExpiration,CacheItemPriority priority,CacheItemRemovedCallback onRemoveCallback)在使用Add方法時,以上7個參數(shù)是必需的,其代表意義如下: 參數(shù)“key”代表緩存數(shù)據(jù)項的鍵值,必須是唯一的。 參數(shù)“value”代表緩存數(shù)據(jù)的內(nèi)容,可以是任意類型。 參數(shù)“dependencies”表示緩存的依賴項,也就是此項的更改意味著緩存內(nèi)容已經(jīng)過期。如果沒有依賴項,可將此值設(shè)置為NULL。 參數(shù)“absoluteExpiration”是日期型數(shù)據(jù),表示緩存過期的時間,.NET 2.0提供的緩存在過期后是可以使用的,能使用多長時間,就看這個參數(shù)的設(shè)置。 參數(shù)“slidingExpiration”的類型表示一段時間間隔,表示緩存參數(shù)將在多長時間以后被刪除,此參數(shù)與absoluteExpiration參數(shù)相關(guān)聯(lián)。 參數(shù)“priority”表示撤銷緩存的優(yōu)先值,此參數(shù)的值取自枚舉變量“CacheItemPriority”,優(yōu)先級低的數(shù)據(jù)項將先被刪除。此參數(shù)主要用在緩存退出對象時。 參數(shù)“onRemoveCallback”表示緩存刪除數(shù)據(jù)對象時調(diào)用的事件,一般用做通知程序。下面的代碼演示了如何應(yīng)用Cache類的這些方法。在使用本代碼時需要注意,代碼中使用了Arraylist對象,所以需要添加對命名空間“System.Collections”的引用,同時使用Cache類別忘記了添加命名空間“System.Web.Caching”。protected void Page_Load(object sender, EventArgs e)ArrayList myarray = new ArrayList(); /創(chuàng)建數(shù)組數(shù)據(jù)myarray.Add(1.學(xué)習(xí)園地);myarray.Add(2.交流論壇);myarray.Add(3.幫助);/將數(shù)組添加到緩存中使用Add方法Cache.Add(Category, myarray, null, DateTime.Now.AddSeconds(60), TimeSpan.Zero, CacheItemPriority.Normal, null);myarray1 = 2.交流園地; /修改數(shù)組數(shù)據(jù)Cache.Insert(Category, myarray); /使用Insert方法修改緩存數(shù)據(jù)string tmpStr = 這是一個臨時數(shù)據(jù);Cachetmpdata = tmpStr;/使用Get方法獲取緩存數(shù)據(jù)Response.Write(Cache.Get(tmpdata).ToString()+);/Cachetmpdata = 這是一個臨時字符串; /重新為緩存賦值的技巧Response.Write(Cache.Get(tmpdata).ToString() + );/使用GetType方法判斷緩存數(shù)據(jù)的類型if (CacheCategory.GetType().Name = ArrayList)Response.Write(類型是數(shù)組);/使用GetEnumerator方法遍歷緩存中的數(shù)據(jù)IDictionaryEnumerator mycache = Cache.GetEnumerator();while (mycache.MoveNext()Response.Write(mycache.Value + );Cache.Remove(tmpdata);/使用Remove方法移除緩存的臨時數(shù)據(jù)技巧:在使用GetType方法時,如果要判斷類型,需要使用Object.GetType().Name屬性獲取類型的名稱。上述代碼的運行結(jié)果如下:這是一個臨時數(shù)據(jù)這是一個臨時字符串類型是數(shù)組這是一個臨時字符串System.Collections.ArrayList其中在讀取類型為ArrayList的數(shù)據(jù)時,由于沒有進行類型轉(zhuǎn)換,所以取出的是類型為“System.Collections.ArrayList”的對象。本書會在本節(jié)最后的實例中介紹如何讀取數(shù)組的詳細內(nèi)容。16.2.4 屬性詳解Cache類的屬性主要用來獲取緩存數(shù)據(jù)的一些基本信息,如緩存的項總數(shù)、指定位置的緩存項等。本書主要介紹兩個屬性:Count和Item。Count用來獲取緩存中所有的項的總數(shù)。使用方法如下:Response.Write(Cache.Count);Item用于返回指定項的內(nèi)容,一般繼承“IEnumerable”接口的類都有這樣的屬性,注意項需要使用“ ”包裝。其使用方法如下:Response.Write(Cache“Category”.ToString();16.2.5 典型應(yīng)用:實現(xiàn)數(shù)據(jù)的緩存快速讀取功能Cache主要用來緩存使用頻率高且不需經(jīng)常更新的數(shù)據(jù)。本例實現(xiàn)一個目錄列表的緩存。為了簡便,列表的內(nèi)容并沒有從數(shù)據(jù)庫中讀取,而是保存在一個ArrayList對象中。本例的目的是將目錄列表填充到下拉框中,當(dāng)緩存失效后,目錄列表的內(nèi)容為空。演示的步驟如下所述。 在VS2005中創(chuàng)建一個網(wǎng)站,命名為“CacheSample”。 打開默認(rèn)生成的Default.aspx頁,在其中添加一個下拉列表框和一個按鈕。 按F7鍵切換到頁面的代碼視圖。不要忘記對命名空間的引用,代碼如下:using System.Web.Caching;using System.Collections; 在“Page_Load”事件中判斷是否存在目錄緩存,如果沒有,則將目錄添加到緩存中。詳細代碼如下所示,其中目錄列表的保存時間是5秒。protected void Page_Load(object sender, EventArgs e)if (!Page.IsPostBack)ArrayList myarray = new ArrayList();/假設(shè)ArrayList的內(nèi)容來自數(shù)據(jù)庫myarray.Add(古代歷史);myarray.Add(當(dāng)代文學(xué));myarray.Add(流行小說);myarray.Add(武俠小說);if (CacheCategorys = null) /判斷是否存在緩存/如果緩存不存在,則添加保存時間是5秒Cache.Add(Categorys, myarray, null, DateTime.Now.AddSeconds(5),TimeSpan.Zero, CacheItemPriority.Normal, null); 回到設(shè)計視圖,雙擊按鈕控件,切換到按鈕的事件代碼中。 在按鈕的雙擊事件中,需要判斷是否有目錄的緩存,有則在下拉框中顯示目錄內(nèi)容,沒有則清空下拉框。詳細代碼如下:protected void Button1_Click(object sender, EventArgs e)if (CacheCategorys != null) /判斷緩存是否失效/如果沒有失效,則取出緩存的列表,注意類型的轉(zhuǎn)換。DropDownList1.DataSource = (ArrayList)CacheCategorys;DropDownList1.DataBind();elseDropDownList1.Items.Clear(); /如果已經(jīng)失效,則清空列表 按Ctrl+S組合鍵保存所有的代碼,再按F5鍵運行程序。在5秒以內(nèi)如果單擊按鈕,則正常顯示目錄列表,如果超過5秒,則緩存對象已經(jīng)不存在,所以下拉列表框的內(nèi)容為空。本節(jié)主要介紹了Cache類的使用方法,其中并沒有涉及緩存依賴內(nèi)容,即當(dāng)實際數(shù)據(jù)改變時,緩存是否隨著改變。下一節(jié)將通過學(xué)習(xí)“CacheDependency”類了解緩存依賴的詳細實現(xiàn)。16.3 緩存依賴類:CacheDependency類CacheDependency類是架設(shè)在Cache類和實際數(shù)據(jù)之間的橋梁。本節(jié)將詳細介紹如何利用CacheDependency類實現(xiàn)數(shù)據(jù)緩存的及時更新。16.3.1 功能說明CacheDependency類被稱為是緩存依賴類,其具體意義表現(xiàn)在當(dāng)緩存對象的實際數(shù)據(jù)發(fā)生改變時,它能及時通知緩存對象。例如緩存對象“Category”保存的是一個XML文件的數(shù)據(jù),如果XML文件發(fā)生了變化,那么系統(tǒng)通過CacheDependency類就會及時更新緩存對象“Category”的內(nèi)容,這樣就能保證用戶讀取的永遠是最新的數(shù)據(jù)。16.3.2 語法定義CacheDependency類的語法定義如下:public class CacheDependency : IDisposable其中繼承了接口“IDisposable”,此接口主要用來定義釋放分配的非托管資源的方法。繼承此接口必須實現(xiàn)方法Dispose,以實現(xiàn)資源的釋放。CacheDependency類的構(gòu)造函數(shù)實現(xiàn)了8個重載,下面的代碼列出了這些重載的函數(shù),并詳細說明了各函數(shù)的參數(shù)。了解這些函數(shù)就可以知道CacheDependency究竟能為緩存帶來什么優(yōu)勢。/假設(shè)緩存的來源文件是當(dāng)前目錄下的data.xml文件/緩存依賴的文件路徑CacheDependency mydep = new CacheDependency(data.xml);/緩存依賴的文件可以有多個CacheDependency mydep1=new CacheDependency(new string data.xml,data1.xml);/檢查緩存依賴更改的依據(jù)時間CacheDependency mydep2 = new CacheDependency(data.xml, DateTime.Now);/檢查多個依賴文件更改的依據(jù)時間CacheDependency mydep3 = new CacheDependency(new string data.xml, data1.xml , DateTime.Now);/檢查依賴多個文件,也依賴多個緩存鍵值CacheDependency mydep4 = new CacheDependency(new string data.xml, data1.xml ,new string Category, Category1 );/關(guān)聯(lián)依賴,還可以依賴于另一個文件緩存依賴CacheDependency mydep5 = new CacheDependency(new string data.xml, data1.xml ,new string Category, Category1 , mydep);/文件和鍵值上次修改的依據(jù)時間CacheDependency mydep6 = new CacheDependency(new string data.xml, data1.xml ,new string Category, Category1 , DateTime.Now);/文件、另一個緩存依賴和鍵值上次修改的依據(jù)時間CacheDependency mydep6 = new CacheDependency(new string data.xml, data1.xml ,new string Category, Category1 , mydep,DateTime.Now);16.3.3 方法和屬性雖然CacheDependency類完成了很重要的功能,但其組成結(jié)構(gòu)卻比較簡單,主要有兩個屬性和一個方法。 屬性“HasChanged”:判斷CacheDependency對象是否已更改。 屬性“UtcLastModified”:返回上次依賴項的修改日期 方法“Dispose”:釋放CacheDependency對象所占有的資源。因為緩存類繼承了接口“IDispose”,所以必須實現(xiàn)此方法。由于緩存類的構(gòu)成比較簡單,本節(jié)并沒有給出演示代碼,屬性和方法的使用將在下一節(jié)的實例中演示。注意:只有Cache類的Insert和Add方法才可以為緩存添加依賴項。16.3.4 典型應(yīng)用:用CacheDependency獲取最新的數(shù)據(jù)本例主要演示如何使用CacheDependency類實現(xiàn)數(shù)據(jù)的及時更新。實例中使用一個GridView控件顯示XML文件的數(shù)據(jù),當(dāng)XML文件的數(shù)據(jù)發(fā)生改變時,客戶端可以及時更新。其實現(xiàn)的功能如圖16-3所示。圖16-3 用CacheDependency獲取最新數(shù)據(jù)的功能實現(xiàn)圖演示的詳細步驟如下所述。 打開VS2005,創(chuàng)建一個網(wǎng)站,命名為“CacheDependencySample”。 在網(wǎng)站根目錄下,添加一個XML文件,用來為控件提供數(shù)據(jù),內(nèi)容如下:英國古代28.00中國歷史20.00 打開默認(rèn)生成的Default.aspx頁,添加一個GridView控件和一個按鈕控件。 按F7鍵切換到窗體的代碼視圖,在Page_Load事件中書寫生成緩存的代碼。詳細內(nèi)容如下:private static CacheDependency mydepen;protected void Page_Load(object sender, EventArgs e)if (!IsPostBack)/創(chuàng)建XML數(shù)據(jù)源DataSet myds = new DataSet();/數(shù)據(jù)源來自文件data.xmlmyds.ReadXml(this.MapPath(Request.ApplicationPath + /data.xml);/判斷是否存在緩存if (CacheBOOKS = null)/創(chuàng)建緩存依賴mydepen = new CacheDependency(this.MapPath(Request.ApplicationPath+ /data.xml);/添加緩存項Cache.Add(BOOKS, myds, mydepen, DateTime.Now.AddSeconds(10), TimeSpan.Zero,CacheItemPriority.Normal, null);注意:使用XML文件讀取方法,必須添加XML操作方法所在的命名空間“System.Xml”。 切換回設(shè)計視圖,再雙擊按鈕控件,此時光標(biāo)??吭诎粹o的Click事件內(nèi)。在此事件內(nèi)書寫代碼,判斷XML文件的數(shù)據(jù)是否已更新,如果已更新則給出提示,并重新添加緩存依賴項,否則直接從緩存讀取GridView控件的數(shù)據(jù)。 在“Button1_Click”事件內(nèi)書寫的詳細代碼如下:protected void Button1_Click(object sender, EventArgs e)/判斷緩存是否發(fā)生了變化if (mydepen.HasChanged)Response.Write(Sorry,數(shù)據(jù)發(fā)生了變化!上次修改時間是: + mydepen.UtcLastModified);/判斷緩存項是否還在if (CacheBOOKS = null)/重新設(shè)置緩存項DataSet myds = new DataSet();myds.ReadXml(this.MapPath(Request.ApplicationPath + /data.xml);mydepen = new CacheDependency(this.MapPath(Request.ApplicationPath + / data.xml);Cache.Add(BOOKS, myds, mydepen, DateTime.Now.AddSeconds(10), TimeSpan.Zero,CacheItemPriority.Normal, null);GridView1.DataSource = CacheBOOKS;GridView1.DataBind();注意:當(dāng)XML文件發(fā)生改變后,其實緩存依賴和緩存項都被移除了,必須重新定義。 按Ctrl+S組合鍵保存代碼的修改。再按F5鍵運行程序,單擊“獲取數(shù)據(jù)”按鈕,GridView就會顯示XML文件的內(nèi)容。 程序運行正常后,在后臺修改XML文件的內(nèi)容,然后再單擊“獲取數(shù)據(jù)”按鈕,則出現(xiàn)更改數(shù)據(jù)的提示,同時GridView顯示了新的內(nèi)容。圖16-4和圖16-5是數(shù)據(jù)更改前和更改后的效果對比。 圖16-4 初次獲取的數(shù)據(jù)效果圖 圖16-5 更改數(shù)據(jù)后的顯示效果圖16.4 數(shù)據(jù)庫緩存依賴類:SqlCacheDependency類數(shù)據(jù)庫緩存依賴主要解決的是當(dāng)數(shù)據(jù)庫的內(nèi)容發(fā)生改變時,如何及時通知緩存,并更新緩存中的數(shù)據(jù)的問題。本節(jié)就介紹如何使用SQL Server 2005和.NET 2.0實現(xiàn)數(shù)據(jù)庫的緩存依賴。16.4.1 功能說明SqlCacheDependency類的使用需要結(jié)合SQL Server 2005數(shù)據(jù)庫,目前還沒有Oracle數(shù)據(jù)庫的緩存依賴。16.4.2 語法定義SqlCacheDependency類的使用語法如下:public class SqlCacheDependency : IDisposable其中繼承了接口“IDisposable”,此接口主要用來定義釋放分配的非托管資源的方法。繼承此接口必須實現(xiàn)方法Dispose,用來實現(xiàn)資源的釋放。SqlCacheDependency類主要的構(gòu)造函數(shù)如下:public SqlCacheDependency(string database,string table)其中參數(shù)一代表要啟用緩存的數(shù)據(jù)庫,參數(shù)二表示緩存的表。在實際使用過程中,只需要指明緩存的數(shù)據(jù)庫和表即可。16.4.3 方法和屬性SqlCacheDependency類的方法和屬性同CacheDependency類相同,主要有三個。 HasChanged:判斷數(shù)據(jù)庫緩存依賴是否發(fā)生了變化。 UtcLastModified:獲取緩存依賴上次更改的時間。 Dispose:釋放緩存依賴所占用的資源。這三個成員的使用方法同CacheDependency類的成員相似,本節(jié)不再贅述。在下節(jié)要介紹的使用實例中,將不再使用代碼的方式實現(xiàn)緩存依賴,而是使用“OutputCache”在.NET 2.0中提供的SqlCacheDependency參數(shù)實現(xiàn)數(shù)據(jù)庫表的緩存。如果要使用編程的方式實現(xiàn)此功能,可參考CacheDependency類的實例。16.4.4 使用SqlCacheDependency類的操作流程要實現(xiàn)數(shù)據(jù)庫緩存依賴,必須結(jié)合數(shù)據(jù)庫的操作。在使用數(shù)據(jù)庫緩存依賴前,必須進行5步操作。詳細流程如圖16-6所示。只有具備了上述條件,才可以正常地使用數(shù)據(jù)庫緩存依賴。下一節(jié)將結(jié)合這5步操作演示如何實現(xiàn)數(shù)據(jù)庫的緩存依賴。創(chuàng)建數(shù)據(jù)庫鏈接圖16-6 使用數(shù)據(jù)庫緩存依賴的流程16.4.5 典型應(yīng)用:獲取數(shù)據(jù)庫表最新數(shù)據(jù)的實例本例要實現(xiàn)的功能是當(dāng)數(shù)據(jù)庫的內(nèi)容發(fā)生變化時,保存在緩存中的數(shù)據(jù)項被更新。具體演示的步驟如下所述。 在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)庫“testCache”。 在數(shù)據(jù)庫“testCache”中添加表“CacheTable”,其信息如表16-3所示。表16-3 CacheTable表的信息字 段 名字段類型說 明idint自增長數(shù)據(jù)標(biāo)識Namenvarchar(20)書名bookPublishnvarchar(50)出版社Pricedecimal(6,2)書的價格 為數(shù)據(jù)庫啟用緩存通知。打開“開始”|“所有程序”|“Microsoft Visual Studio 2005”|“Visual Studio Tools”|“Visual Studio 2005命名提示”菜單命令。 輸入如下命令,其中“-ed”和“-et”分別代表啟用緩存依賴數(shù)據(jù)庫和啟用緩存數(shù)據(jù)表。aspnet_regsql.exe -S CGJ-57F90CCA64CSQLEXPRESS -E -ed -d testCache -et -t CacheTable注意如果使用的數(shù)據(jù)庫驗證方式是“SQL Server身份驗證”,則需要使用如下的啟動命令:aspnet_regsql.exe -S CGJ-57F90CCA64CSQLEXPRESS -U -P -ed -d testCache -et -t CacheTable 輸入命令后,按回車鍵。如果執(zhí)行成功,效果如圖16-7所示。 打開VS2005,新建一個網(wǎng)站,命名為“SqlCacheDependency”。 按F5鍵運行程序,主要目的是生成一個默認(rèn)的Web.Config文件。然后關(guān)閉運行的程序。 在Web.config中配置數(shù)據(jù)庫連接字符串,代碼如下:圖16-7 啟用數(shù)據(jù)庫緩存依賴成功的提示圖 在“system.web”節(jié)點內(nèi),添加數(shù)據(jù)庫緩存依賴的配置,詳細代碼如下所示。注意配置中的“connectionStringName”屬性,要與前面創(chuàng)建的數(shù)據(jù)庫連接字符串的名字相對應(yīng)。 按Ctrl+S組合鍵保存配置文件的更改。 打開默認(rèn)生成的Default.aspx頁,在設(shè)計視圖中添加一個GridView控件,用來顯示從數(shù)據(jù)庫獲取的數(shù)據(jù)。再添加一個Literal控件,主要用來顯示時間,通過時間判斷顯示的是否是緩存中的數(shù)據(jù)。 為GridView配置數(shù)據(jù)源。單擊其任務(wù)列表,在“選擇數(shù)據(jù)源”下拉框中,單擊“新建數(shù)據(jù)源”命令,打開數(shù)據(jù)源的配置向?qū)А?在打開的數(shù)據(jù)源類型窗口中,選擇“數(shù)據(jù)庫”,單擊“確定”按鈕,出現(xiàn)選擇連接字符串窗口,通過下拉列表選擇剛剛創(chuàng)建的“TestCacheConnectionString”連接串。 單擊“下一步”按鈕,出現(xiàn)“配置Select語句”對話框,在“列”列表框中選擇“*”,表示選中所有列。 單擊“下一步”按鈕出現(xiàn)測試查詢對話框,然后單擊“完成”按鈕。 按F7鍵切換到到代碼視圖,在“Page_Load”事件中添加如下代碼(主要是顯示當(dāng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論