這篇文章主要講解了“ASP.NET常用狀態(tài)管理有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“ASP.NET常用狀態(tài)管理有哪些”吧!
墾利網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)建站于2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
ASP.NET常用狀態(tài)管理方案有:
◆視圖狀態(tài)View state
◆隱藏域 Hidden Fields
◆Cookies
◆Query string
◆Application state
◆Session state
◆Profile
ASP.NET常用狀態(tài)管理其中View state, hidden fields, cookies, and query strings將值以不同的方式保存在客戶端。而application state, session state, and profile則在服務(wù)器端將值以不同的形式保存起來。
視圖狀態(tài)(View state)
View state會自動保存web頁面各個(gè)元素的值,只要控件的EnableViewState=true. ViewState以鍵值對的形式存儲元素的值.在asp.net中,view state的值是以隱藏域的形式通過哈希的方法存儲在頁面中,形同:
type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value=
"/wEPDwUJNzgzNDMwNTMzZGTN7+FHXsyXJ2Jnzu0UxkEXCEetrg==" />
如果使用View state來存儲數(shù)據(jù),那么數(shù)據(jù)的大小不能超過page的MaxPageStateFieldLength定義的值.
◆優(yōu)點(diǎn):無需服務(wù)器端資源,由于view state是保存在頁面中的,所以無需借用服務(wù)器端資源保存值的問題.使用簡易,只須以鍵值對的形式即可保存元素的值.安全性方面由于view state保存的值是經(jīng)哈希處理并且壓縮過的,所以使用起來要比Hidden Fields安全.
◆缺點(diǎn):性能問題,正因?yàn)関iew state將值保存在Page中,因此每次在加載頁面過程中都會去裝載view state中保存的值,因此帶來性能的損耗.
安全問題,雖然view state保存的值是經(jīng)哈希處理并且壓縮處理的,但在頁面中仍然以hidden fields的形式存在,仍然易被黑客截取并利用.
隱藏域(Hidden Fields):
這是古老的asp保存元素值的一種方式.使用Hidden Fields取決于頁面提交數(shù)據(jù)的方式.必須通過Post方法提交,才能取得Hidden Fields的值,如果使用Http的 Get方法,則該Hidden元素的值無效。
Hidden Fields另外一個(gè)特點(diǎn)就是,它保存元素的值在Html代碼中是以明文的方式保存的??梢院芊奖愕夭榭错撁鎕tml源代碼得到hidden fields元素的值。
◆優(yōu)點(diǎn):使用方便, 適用范圍廣,幾乎所有的瀏覽器和客戶端設(shè)備都支持hidden fields這種形式.
◆缺點(diǎn):非常不安全、只能存儲非常簡單的數(shù)據(jù),如string類型、性能問題,使用hidden fields如同view state一樣每次頁面顯示都要加載.
Cookies
Cookies也是在客戶端存儲數(shù)據(jù)的一種形式。Cookies可以長期保存數(shù)據(jù),也可以暫時(shí)保存數(shù)據(jù),這依賴于cookies的過期時(shí)間設(shè)置。Cookies對應(yīng)的作用范圍是整個(gè)web站點(diǎn),而不是某個(gè)頁面,它依賴于瀏覽器進(jìn)行管理,如果客戶端瀏覽器禁用Cookies,那么就無法啟用Cookies在客戶端保存數(shù)據(jù)。Cookies伴隨著頁面的請求將數(shù)據(jù)發(fā)送到服務(wù)器端,它的值可以通過Request來獲取。大多數(shù)瀏覽器支持Cookies能夠存放4M字節(jié)的數(shù)據(jù),同時(shí)瀏覽器對機(jī)器能夠容納的Cookies數(shù)也有限制,一般地,允許每個(gè)站點(diǎn)最多可以產(chǎn)生20個(gè)Cookies。
讀取Cookies的值:
if (Request.Cookies["UserSettings"] != null) { string userSettings; if (Request.Cookies["UserSettings"]["Font"] != null) { userSettings = Request.Cookies["UserSettings"]["Font"]; } } 向Cookies寫值: Response.Cookies["UserSettings"]["Font"] = "Arial"; Response.Cookies["UserSettings"]["Color"] = "Blue"; Response.Cookies["UserSettings"].Expires = DateTime.Now.AddDays(1d);
◆優(yōu)點(diǎn):可以配置過期時(shí)間、無需占用服務(wù)器端資源、簡單易用、也可以保持持久數(shù)據(jù)
◆缺點(diǎn):大小限制,大多數(shù)瀏覽器置支持4M字節(jié)。受到用戶配置限制,如果瀏覽器禁用Cookies,那么該項(xiàng)功能就沒法使用、潛在的安全隱患。 由于Cookies是以文本文件的形式存放在客戶端機(jī)器中,雖然Cookies的內(nèi)容經(jīng)過哈希,但仍然可以被人獲取并利用。
查詢字符串
查詢字符串就是在頁面的URL后面加上一些參數(shù),通過這種形式進(jìn)行頁面之間的值傳遞。它提供了非常方便的頁面?zhèn)髦捣绞健?br/>◆優(yōu)點(diǎn):
簡單方便,應(yīng)用非常廣泛
◆缺點(diǎn):極不安全,非常有必要借助于URLEncode和URLDecode對字符串進(jìn)行處理以增強(qiáng)安全。大小受到限制,一些瀏覽器或客戶端設(shè)備只支持長度為2083的URL字符串。
Application State
Asp.net允許你以Application state的方式存儲值--它是HttpApplicationState類的一個(gè)實(shí)例。Application state提供一個(gè)全局的存儲方式,可以被web 應(yīng)用程序的每一個(gè)頁面獲取。Application state和Session State一樣,以鍵值對的形式存儲值。
◆優(yōu)點(diǎn):全局范圍
◆缺點(diǎn):全局范圍、占用服務(wù)器資源、脆弱性,由于Application State是存儲在內(nèi)存中,因此當(dāng)應(yīng)用程序停止或重啟時(shí)會丟失。擴(kuò)展性差,無法在多個(gè)服務(wù)器或多個(gè)處理器之間共享。
Session State
Session State和Application state有點(diǎn)類似,但它作用于瀏覽器的會話中。如果不同的用戶使用你的應(yīng)用程序會產(chǎn)生不同的session會話。Session state也是以鍵/值對的形式存儲數(shù)據(jù)。
◆優(yōu)點(diǎn):使用方便、數(shù)據(jù)持久,因?yàn)閍sp.net提供的Session克服了原來asp進(jìn)程依賴性的缺陷,可以將Session保存在數(shù)據(jù)庫中,因此session的數(shù)據(jù)***不會丟失。無需Cookies支持,這也是asp.net的一大改進(jìn)之處,可以在ASP.NET中客戶端的Session信息以Cookieless方式存儲。
◆缺點(diǎn):由于Session變量存儲在服務(wù)器端,因此占用服務(wù)器端資源。
Profile
以Profile的形式存儲數(shù)據(jù)是asp.net2.0提供的一個(gè)新功能。它是將信息存儲在數(shù)據(jù)庫中的,因此***不會丟失信息。
◆優(yōu)點(diǎn):數(shù)據(jù)持久性、可擴(kuò)展
◆缺點(diǎn):由于profile將數(shù)據(jù)存儲在數(shù)據(jù)庫中,因此存在以下特點(diǎn),需要人工維護(hù)數(shù)據(jù),性能略差
感謝各位的閱讀,以上就是“ASP.NET常用狀態(tài)管理有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對ASP.NET常用狀態(tài)管理有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!