歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

ASP應(yīng)用程序狀態(tài)管理.ppt

  • 資源ID:3388649       資源大?。?span id="btvcel0" class="font-tahoma">429.31KB        全文頁數(shù):18頁
  • 資源格式: PPT        下載積分:9.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

ASP應(yīng)用程序狀態(tài)管理.ppt

第6章ASP.NET應(yīng)用程序狀態(tài)管理,如果讀者曾經(jīng)有過開發(fā)Windows應(yīng)用程序的經(jīng)驗,可能不太會留意維護(hù)應(yīng)用程序狀態(tài),因為應(yīng)用程序本身就在客戶端運(yùn)行,可以直接在內(nèi)存中維護(hù)其應(yīng)用程序狀態(tài)。但是對于ASP.NET應(yīng)用程序來說,事情不那么簡單了,因為ASP.NET應(yīng)用程序在服務(wù)器端運(yùn)行,客戶端使用無狀態(tài)的HTTP協(xié)議對ASP.NET應(yīng)用程序發(fā)出請求,ASP.NET應(yīng)用程序響應(yīng)用戶請求,向客戶端發(fā)送請求的HTML代碼,服務(wù)器并不會維護(hù)任何客戶端狀態(tài)。考慮一個有著成千上萬并發(fā)用戶的服務(wù)器,如果為每個用戶都維護(hù)狀態(tài)的話會耗費(fèi)非常多的資源。對于一個Web應(yīng)用程序來說,通常需要維護(hù)應(yīng)用程序的狀態(tài)。比如電子商務(wù)網(wǎng)站的購物車,當(dāng)客戶在多個頁面中選擇商品時,需要為其維護(hù)一個所選商品的列表。ASP.NET為解決狀態(tài)維護(hù)的問題提供了多種方法,本章將詳細(xì)討論如何使用這些方法為ASP.NET應(yīng)用程序添加狀態(tài)管理功能。,6.1ASP.NET狀態(tài)管理簡介,由于使用無狀態(tài)的HTTP協(xié)議作為Web應(yīng)用程序的通信協(xié)議,當(dāng)客戶端每次請求頁面時,ASP.NET服務(wù)器端都將重新生成一個網(wǎng)頁的新實例。這意味著客戶端用戶在瀏覽器中的一些狀態(tài)或者是一些修改都將丟失。比如一個客戶管理系統(tǒng),用戶在很多文本框中輸入了內(nèi)容,當(dāng)點(diǎn)擊提交按鈕到服務(wù)器后,從服務(wù)器返回的將是一個全新的網(wǎng)頁,用戶所添加的內(nèi)容將全部丟失。記得在使用ASP的時候,筆者為了保存每個文本框控件中的值信息,在數(shù)據(jù)提交前使用了大量的Session變量來保存每個文本框的值,并在頁面重新生成后將這些會話變量中的值一一賦給每個控件。這是一件相當(dāng)費(fèi)時費(fèi)力的工作,可謂事倍功半。在ASP.NET最初推出以后,讓筆者眼前一亮的是,當(dāng)頁面回發(fā)(Postback)后,控件依然能保存其輸入的值,ASP.NET使用ViewState技術(shù),也稱為視圖狀態(tài)為控件保存了狀態(tài)信息,ASP.NET中提供了如下幾大用于狀態(tài)管理的技術(shù):,6.2ViewState視圖狀態(tài),視圖狀態(tài)可以說是應(yīng)用最為廣泛的一種技術(shù),幾乎每個ASP.NET服務(wù)器控件都具有EnableViewState屬性,允許控件在頁面回送時保存其屬性值。開發(fā)人員也可以使用Page.ViewState集合類添加自己的狀態(tài)數(shù)據(jù),可以使用這個屬性保存簡單的數(shù)據(jù)類型或者是自定義的對象類型。例如可以使用視圖狀態(tài)保存一個計數(shù)器的值,代碼如下:protectedvoidPage_Load(objectsender,EventArgse)ViewState"Counter"=5;可以看到ViewState是一個字典類型的對象,使用ViewStatekey=value的格式來設(shè)置值,如果在集合中存在指定鍵的值,則進(jìn)行替換,否則將自動創(chuàng)建一個新的鍵值對。,6.2.1視圖狀態(tài)原理,應(yīng)用程序在運(yùn)行時,ASP.NET引擎會自動在源代碼的尾部嵌入的一個隱藏域(HiddenField),命名為_VIEWSTATE。_VIEWSTATE以鍵/值對集合的形式保存頁面中控件的狀態(tài)數(shù)據(jù),_VIEWSTATE將這些值以Base64編碼格式編碼字符串,如下代碼所示:,6.2.2在視圖狀態(tài)中存儲對象,在ViewState中,可以存儲用戶自定義的對象數(shù)據(jù),但是必須知道,當(dāng)存儲一個自定義對象時,ASP.NET必須能夠轉(zhuǎn)換該對象為字節(jié)流以便于將對象添加到頁面隱藏域中進(jìn)行保存。這意味著自定義對象必須支持序列化,否則ASP.NET將會拋出異常。下面創(chuàng)建一個名為ViewStateSample的ASP.NETWeb站點(diǎn),右擊網(wǎng)站項目名稱,選擇“添加新項”菜單項,添加一個新的類,命名為Book.cs,如圖所示:,6.2.3視圖狀態(tài)的安全,ViewState中的數(shù)據(jù)以Base64編碼的格式保存在客戶端瀏覽器中,目前,可以使用很多工具解碼Base64編碼的字符串,例如可以使用一款名為ViewStateDecoder的工具來直接查看視圖狀態(tài)的數(shù)據(jù)結(jié)構(gòu),如圖所示。,6.3跨頁傳遞信息,使用視圖狀態(tài)有一個很大的限制就是不能跨頁傳遞信息,如果用戶導(dǎo)航到其他頁面,那信息將會被丟失。本節(jié)將討論如何在多個頁面之間傳遞信息,可以使用查詢字符串或者是跨頁提交技術(shù)。如果這些技術(shù)都不能滿足應(yīng)用程序的要求,那么可以考慮使用cookies、會話狀態(tài)或者是應(yīng)用程狀態(tài),本章以后將會詳細(xì)的討論。,6.3.1查詢字符串,最常用的方法應(yīng)該是在URL中使用查詢字符串來傳遞信息,現(xiàn)今網(wǎng)絡(luò)上多如牛毛的網(wǎng)站都使用這種技術(shù)來在頁面之間傳遞信息。例如如果從每一個頁面上獲取了當(dāng)前用戶的用戶ID,希望在第二個頁面上顯示關(guān)于此ID的詳細(xì)信息,可以使用如下的查詢字符串:,6.3.2跨頁回送技術(shù),Postback技術(shù)能夠?qū)㈨撁姘l(fā)送到服務(wù)器并從服務(wù)器重新獲取當(dāng)前的頁面,這個技術(shù)為在ASP.NET中實現(xiàn)類似Windows桌面應(yīng)用程序的響應(yīng)效果提供了重大的作用??珥摶厮褪莗ostback技術(shù)的擴(kuò)展,使PostBack能夠跨越多個頁面。ASP.NET的中大多數(shù)按鈕控件都提供了一個名為PostBackUrl的屬性,該屬性定義在IButtonControl接口中,任何實現(xiàn)了該接口的控件比如ImageButton、LinkButton和Button控件都具有這個屬性用來實現(xiàn)控頁回送。只要為按鈕控件的PostBackUrl指定另一個Web頁面的Url,當(dāng)用戶點(diǎn)擊按鈕時,頁面將被回送到新的Url頁面,回送的頁面中將包括原來頁面中所有的輸入控件的值。,6.4使用Cookie保存會話信息,當(dāng)筆者第一次聽到瀏覽器Cookie這個詞時,對這個詞充滿了好感,Cookie中文稱為小甜餅,總讓人想象一些美好的東西。但是后來幾年,這個技術(shù)被一些沖滿惡意的用戶利用來收集用戶敏感信息,造成了網(wǎng)民們對這個技術(shù)是又愛又恨。越來越多的用戶開始在瀏覽器中禁用Cookie,防止敏感信息被黑客盜取。,6.4.1Cookie技術(shù)簡介,Cookie提供了一種在Web應(yīng)用程序中存儲用戶特定信息(如歷史記錄或用戶首選項)的方法。Cookie是一小段文本信息,隨著請求和響應(yīng)在Web服務(wù)器和客戶端之間傳遞。Cookie包含每次用戶訪問站點(diǎn)時Web應(yīng)用程序都可以讀取的信息,這種技術(shù)將在客戶端硬盤上創(chuàng)建一些文件來存放用戶信息,這些文件一般存儲在Internet臨時文件夾中,圖6.6是筆者的機(jī)器上的Cookie文件。由于Cookie信息是保存在客戶端的文件中,只要用戶沒有清除瀏覽器端的Cookie文件,當(dāng)以后再次請求站點(diǎn)中的頁面時,瀏覽器便會在本地硬盤上查找與該Url關(guān)聯(lián)的Cookie,如果Cookie存在,會將該請求與Cookie一起發(fā)送到站點(diǎn)。Cookie文件中保存的是文本信息,而且具有4096個字節(jié)的限制,很容易被不懷好意的用戶進(jìn)行截取而造成資源的外泄。因此在開發(fā)應(yīng)用程序時,對于一些機(jī)密性強(qiáng)的信息,比如銀行卡賬號等,不要使用Cookie技術(shù)來保存。,6.4.2使用Cookie保存信息,ASP.NET中可以使用Response對象向瀏覽器發(fā)送Cookie,Request對象獲取Cookie,這兩個對象都具有一個名為Cookies的集合屬性,該集合以名/值對的形式保存Cookie信息。每個Cookie必須具有一個唯一的名稱,以便于瀏覽器進(jìn)行識別,如果瀏覽器檢測到具有相同名稱的Cookie,則會覆蓋其中的的一個。,6.5會話狀態(tài),會話狀態(tài)是ASP.NET中非常重要的狀態(tài)管理技術(shù),同時也是功能很強(qiáng)大的狀態(tài)管理技術(shù)。會話狀態(tài)允許信息存儲在一個頁面被能被其他頁面進(jìn)行訪問。會話狀態(tài)支持標(biāo)準(zhǔn)數(shù)據(jù)類型和任何派生自object的類型,比如用戶自定義的類型。會話狀態(tài)使用與ViewState類似的集合語法,不同點(diǎn)之處只在于其名稱上,會話狀態(tài)使用Session,而視圖狀態(tài)使用ViewState。會話狀態(tài)是特定于用戶的,當(dāng)一個用戶開始訪問Web應(yīng)用程序時,將會產(chǎn)生一個會話狀態(tài)。不同的用戶具有不同的會話狀態(tài),如果有1萬個用戶,將會有1萬個用戶狀態(tài)。會話狀態(tài)在存儲與用戶相關(guān)的信息方面非常有用,比如購特網(wǎng)站的購物車就可以使用會話狀態(tài)來進(jìn)行存儲。必須注意的是使用會話狀態(tài)并不是無償?shù)模瑫挔顟B(tài)需要維護(hù)每個用戶的信息,這將需要消耗大量的服務(wù)器端資源。,6.5.1會話狀態(tài)簡介,由于必須為每個用戶維護(hù)一個會話狀態(tài),ASP.NET將會為每個新用戶請求創(chuàng)建一個唯一的會話ID。這個會話ID使用了唯一的120位標(biāo)識符,ASP.NET使用一種保密的算法來生成這個值以保證這個值的唯一性。當(dāng)客戶端持有一個會話ID,ASP.NET將搜尋相應(yīng)的會話,提取用戶在會話中存儲的對象,放入一個指定的集合中讓用戶進(jìn)行訪問。必須注意的是會話狀態(tài)是保存在服務(wù)器端的,這與前面所講的幾種狀態(tài)維護(hù)類型都不相同,為了保證會話狀態(tài)的安全性,ASP.NET會話狀態(tài)將不會直接保存在客戶端。會話狀態(tài)可以使用多種方式進(jìn)行存儲,ASP.NET提供了一個名為狀態(tài)提供者的機(jī)制,讓開發(fā)人員可以指定要存儲會話的類型,比如可以指定存儲到服務(wù)器端內(nèi)存,SQLSERVER,專門的狀態(tài)服務(wù)器等等,可以在web.config配置文件中配置會話狀態(tài)。,6.5.2使用會話狀態(tài),為了訪問或者是存取會話狀態(tài),可以使用Page.Session屬性,這是一個System.Web.SessionState.HttpSessionState類型的集合對象,使用的方式與本章前面視圖狀態(tài)的方式相似,例如下面的代碼使用Session屬性存儲一個DataSet對象,并從Session中獲取DataSet對象,代碼如下:Session"myDataSet"=DataSetObject;DataSetObject=(DataSet)Session"myDataSet"會話狀態(tài)對當(dāng)前用戶來說是全局性的,不論用戶訪問哪個頁面,都可以獲取存儲在會話狀態(tài)中的信息。但是必須注意,有如下幾個選項將會導(dǎo)致會話狀態(tài)丟失:用戶關(guān)閉并重新啟動了瀏覽器。用戶使用不同的瀏覽器訪問相同的頁面,瀏覽器不同將具有不同的處理會話的方式,因此也會導(dǎo)致會話狀態(tài)的丟失。,6.5.3配置會話狀態(tài),ASP.NET允許開發(fā)人員在web.config配置當(dāng)前應(yīng)用程序的會話狀態(tài),可以在這個文件中配置一些較高級的會話狀態(tài)選項。web.config有一個名為sessionState的配置塊,在該塊中提供了很多與Session相關(guān)的配置選擇,一個簡單的sessionState配置塊的代碼如下所示:下面來分別對這些配置節(jié)進(jìn)行詳細(xì)的討論:1Cookieless使用Cookie保存會話ID2Timeout指定應(yīng)用程序會話超時時間3cookieName用于指定存儲會話ID的Cookie名稱4mode用于指定會話狀態(tài)值的位置,6.6應(yīng)用程序狀態(tài),應(yīng)用程序狀態(tài)是指在整個應(yīng)用程序范圍內(nèi)可被任何客戶端進(jìn)行訪問的一些全局對象。應(yīng)用程序狀態(tài)基于System.Web.HttpApplicationState類,可以在任何位置使用Page類內(nèi)置的Application對象來訪問應(yīng)用程序?qū)ο?。?yīng)用程序狀態(tài)的使用方式與Session基本一致,都支持相同的對象類型,信息都保存在服務(wù)器上,并且使用一致的基于字典的語法。使用應(yīng)用程序變量的一個常見的例子是網(wǎng)頁計數(shù)器,,6.7小結(jié),本章討論了ASP.NET中的狀態(tài)管理技術(shù),首先介紹了ASP.NET引入的視圖狀態(tài),介紹了視圖狀態(tài)的原理,如何在視圖狀態(tài)中存儲自定義對象以及視圖狀態(tài)的安全性。接下來討論了如何在多個頁面中傳遞信息,討論了如何使用查詢字符串,如何使用跨頁回送技術(shù)讓頁面回送到其他頁面。6.4節(jié)討論了使用Cookie技術(shù)保存會話信息,并介紹了會話狀態(tài)和應(yīng)用程序狀態(tài)這兩種服務(wù)器端的狀態(tài)維護(hù)技術(shù)。,

注意事項

本文(ASP應(yīng)用程序狀態(tài)管理.ppt)為本站會員(max****ui)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!