西西軟件下載最安全的下載網(wǎng)站、值得信賴(lài)的軟件下載站!

首頁(yè)編程開(kāi)發(fā)ASP.NET → ASP.NET編程中Web頁(yè)面幾種狀態(tài)管理總結(jié)

ASP.NET編程中Web頁(yè)面幾種狀態(tài)管理總結(jié)

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2012/11/21 8:45:07字體大小:A-A+

作者:西西點(diǎn)擊:0次評(píng)論:0次標(biāo)簽: Cookie Session

  • 類(lèi)型:站長(zhǎng)工具大小:5KB語(yǔ)言:中文 評(píng)分:7.5
  • 標(biāo)簽:
立即下載
4 頁(yè) ApplicationState

ApplicationState

應(yīng)用程序狀態(tài)是指采用HttpApplicationState實(shí)現(xiàn)的狀態(tài)維持方式,使用代碼如下:

Application.Lock();
Application["PageRequestCount"] = ((int)Application["PageRequestCount"]) + 1;
Application.UnLock();

對(duì)于這種方法,我不建議使用,因?yàn)椋?br />1. 與使用靜態(tài)變量差不多,直接使用靜態(tài)變量可以不需要字典查找。
2. 選擇強(qiáng)類(lèi)型的集合或者變量可以避免裝箱拆箱。

ViewState,ControlState

視圖狀態(tài),控件狀態(tài),二者是類(lèi)似,在頁(yè)面中表現(xiàn)為一個(gè)hidden-input元素:

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="......................" />

控件狀態(tài)是ASP.NET 2.0中引入,與視圖狀態(tài)相比,它不允許關(guān)閉。
由于它們使用方式一致,而且視圖狀態(tài)是基于控件狀態(tài)的實(shí)現(xiàn)邏輯,所以我就不區(qū)分它們了。

在ASP.NET的早期,微軟為了能幫助廣大開(kāi)發(fā)人員提高開(kāi)發(fā)效率,引用入一大批的服務(wù)端控件,并為了能將事件編程機(jī)制引入ASP.NET中,又發(fā)明了ViewState。

這種方式雖然可以簡(jiǎn)化開(kāi)發(fā)工作量,然而卻有一些限制和缺點(diǎn):
1. 視圖狀態(tài)的數(shù)據(jù)只能用于回發(fā)(postback)。
2. 視圖狀態(tài)的【濫用】容易導(dǎo)致生成的HTML較大,這會(huì)引起一個(gè)惡性循環(huán):
  a. 過(guò)大的ViewState在序列化過(guò)程中會(huì)消耗較多的服務(wù)器CPU資源,
  b. 過(guò)大的ViewState最終生成的HTML輸出也會(huì)很大,它會(huì)浪費(fèi)服務(wù)端網(wǎng)絡(luò)資源,
  c. 過(guò)大的ViewState輸出導(dǎo)致表單在下次提交時(shí),會(huì)占用客戶(hù)端網(wǎng)絡(luò)資源。
  d. 過(guò)大的ViewState數(shù)據(jù)上傳到服務(wù)端后,反序列化又會(huì)消耗較多的服務(wù)器CPU資源。
  因此,整個(gè)交互過(guò)程中,用戶(hù)一直在等待,用戶(hù)體驗(yàn)極差。

在ASP.NET興起的年代,ViewState絕對(duì)是個(gè)了不起的發(fā)明。
然而,現(xiàn)在很多關(guān)于ASP.NET性能優(yōu)化的方法中,都會(huì)將【關(guān)閉ViewState】放在頭條位置。
為什么會(huì)這樣呢,大家可以自己思考一下了。

有些人認(rèn)為:我現(xiàn)在做的程序只是在局域網(wǎng)內(nèi)使用,使用ViewState完全沒(méi)有問(wèn)題!
然而,那些人或許沒(méi)有想過(guò):
1. 未來(lái)用戶(hù)可能會(huì)把它部署在互聯(lián)網(wǎng)上運(yùn)行(對(duì)于產(chǎn)品來(lái)說(shuō)就是遇到大客戶(hù)了)。
2. 項(xiàng)目早期的設(shè)計(jì)與規(guī)劃,對(duì)后期的開(kāi)發(fā)與維護(hù)來(lái)說(shuō),影響是巨大的,因?yàn)樵S多基礎(chǔ)部分通常是在早期開(kāi)發(fā)的。
當(dāng)這二種情況的任何一種發(fā)生時(shí),想再禁用ViewState,可能已經(jīng)晚了。

對(duì)于視圖狀態(tài),我認(rèn)為它解決的問(wèn)題比它引入的問(wèn)題要多要復(fù)雜,
因此,我不想花時(shí)間整理它的優(yōu)缺點(diǎn),我只想說(shuō)一句:把它關(guān)了,在web.config中關(guān)了。

另外,我不排斥使用服務(wù)器控件,我認(rèn)為:你可以使用服務(wù)端控件顯示數(shù)據(jù),但不要用它處理回發(fā)。

如果你仍然認(rèn)為視圖狀態(tài)是不可缺少的,那我還是建議你看看ASP.NET MVC框架,看看沒(méi)有視圖狀態(tài)是不是照樣可以寫(xiě)ASP.NET程序。

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀(guān)圍觀(guān)
    • 2 無(wú)聊無(wú)聊

    熱門(mén)評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱(chēng):
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)
    推薦文章

    沒(méi)有數(shù)據(jù)

    最新文章
      沒(méi)有數(shù)據(jù)