程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 詳解ASP.NET的四種狀態

詳解ASP.NET的四種狀態

編輯:關於ASP.NET

這些狀態的原理對於做.NET開發非常重要。現在詳細解說一下。

視圖狀態:視圖狀態就在大家身邊不知道大家是否注意。ASP.NET是基於服務其處理事件 的。當服務器處理完事件時,再返回本窗體時,如果沒有視圖狀態,原來的數據將不會在有 。這樣說也許會暈。舉個列子,比如有一個網站需要你注冊成為會員。當你填完信息,(一 般來說頁面會轉向別的地方)這裡為了說明問題,我們讓他返回原來的頁面繼續操作,如果 沒有視圖狀態,則你以前填的數據都沒有了。如果有視圖狀態,則原來的數據還在。試圖狀 態在一些時候很有用。比如說分級驗證時。

那麼.NET是用什麼方法保持試圖狀態呢?這裡微軟采用了一種特殊的方法。在浏覽器打開 網頁的源代碼,你會發現一段你在編輯網頁時,沒有添加的一個HTML控件。

形式是這樣的:

<input type="hidden" name="_VIEWSTATE" id="_VIEWSTATE" value="一 些加密過的值"/>

這是.NET自動給你添加的。它也是視圖狀態能夠實現的功臣。因為這個空間是隱藏的,所 以不會破壞頁面的布局。空件中的value中的值就是就是各個空件以及控件中的數據(狀態) 。這些數據是經過哈希函數加密過的。這是為了安全考慮。當網頁提交時,浏覽器首先將當 前網頁中的各種狀態(包括控件以及控件中的數據)保存到這個HTML字段中。當網頁再次返 回浏覽器時,在自動把這些狀態返回給網頁,這樣網頁也就恢復了狀態。

再來講講視圖狀態需要注意的問題。

視圖狀態只能在本網頁與服務器之間保持,不能在不同網頁之間連接時保持。默認情況下 ,幾乎所有的ASP.NET控件都有保持視圖狀態的功能。

視圖狀態有很多優點,但同樣(世上每件事都具有兩面性,一個好的技術也不列外)有些 缺點。首先是安全,雖然數據是經過加密,但對於黑客中的骨灰級人物,還是很不安全的。 再次,你可以想如果你的頁面包括幾百條記錄,頁面很復雜,這是必會影響網頁的加載速度 。

應用程序狀態(Application):Application對象是應用程序的全局性對象。用於存放應 用程序的全局共享資源。他的本質是HttpApplicationState類的一個實例。當用戶第一次反 問某虛目錄中的資源時,就被創建。也就是說網站第一次在互聯網上發布,這時有一個用戶 剛好訪問你的虛擬目錄資源,那麼Application對象就已經建立。在資源與應用程序之間建立 了一個緩沖區。

應用程序狀態只有在網站運行時存在。當應用程序推出或服務器關閉時(更慘一點服務器 崩潰了),應用程序狀態中保存的數據機會丟失和損壞。所以對於需要永久保留的資源還是 在數據庫中持久化保存的好。

介紹一些Application對象的一些操作方法。

Application對象當然是采用最經典的“鍵-值”對的字典方法來定義。其中鍵為字符串代 表Application對象的名稱。值可以是任何類型的數據。(例如HTML,CSS,SQL都可以)。舉個 例子:

Application["source"]="special source";

string message =Application["source"].ToString();

在Application中添加刪除保存的對象。

Application.Add("source",''special source");

Application.remove("source");

來一個狠一點的操作,把Application中的對象全部請出去。

Application.Clear();

或Appication.RemoveAll();

信息共享自然會引來一個問題,資源的同步競爭。這類問題解決當然要靠鎖了。

Applicatin.Lock()//加鎖鎖定資源,不讓其他進程訪問。

functions(Application["source"]);//一些操作Application對象的操作。

Application.UnLock();//解除鎖定。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved