天天看點

Asp.net 對象之application與session

     上篇部落格講解了,這篇部落格為大家詳細的介紹一下application對象與session對象

     Application對象時httpApplicationState對象的一個執行個體,可以生成一個所有web應用程式都可以存取的變量,這個變量的使用範圍涵蓋所有使用者,是要他正在用這個網頁的程式都可以存取這個變量。

     文法: Application[“變量”]=”變量的内容”; 例如:application[“count”]=0;

     Application對象的聲明周期:他從在與伺服器的内容中隻要建立了,就會一直存在,知道關閉IIS伺服器,或者用page對象的clear方法清除。因為他不會自己消亡,是以注意不要建立過多的對象!

Application對象的常用屬性,

屬    性

說    明

AllKeys

傳回全部Application對象變量名到一個字元串數組中

Count

擷取Application對象變量的數量

Item

允許使用索引或Application變量名稱傳回内容值

這些屬性主要使用的是count屬性, 一般用來統計網站的通路數量!

Application對象常用的方法

方    法

Add

新增一個Application對象變量

Clear

清除全部Application對象變量

Lock

鎖定全部Application對象變量

Remove

使用變量名稱移除一個Application對象變量

RemoveAll

移除全部Application對象變量

Set

使用變量名稱更新一個Application對象變量的内容

UnLock

解除鎖定的Application對象變量

    比較常用的lock和unlock 方法。

    Application的方法都是用于處理多個使用者對存儲在Application中的資料進行寫入的問題。共有兩個:Lock方法:防止其他用戶端更改Application對象的值。(僅目前客戶可修改和存取);Unlock方法:與Lock方法相反,允許其他用戶端更改Application對象的值。

   ·Lock方法,鎖住其他線程對Application對象中stat集合的通路權限。這個方法主要是用來防止對Application的變量操作過程中,其他并發程式可能造成的影響。比如在記數過程中,如果不進行上鎖操作,就有可能發生髒讀髒寫。例如,開始從變量中取得記數值1,

     如果在記數并寫回到變量之間,另一頁面對它發生了一次記數,并先行寫回變量,那麼最終寫回到變量中的值為2,而并不是實際的3。如果采用了上鎖機制,在頁面讀出變量到記數并寫回變量的過程中,即使發生了另一次記數,由于變量被鎖住,它也不可能在變量被寫回以前取得成功,隻有等待變量釋放,進而形成兩者對變量操作的串行性,避免了資料的髒讀和髒寫。

·Unlock方法,對Application對象Stat集合鎖定的解鎖操作,釋放資源以供其他頁面使用。

         具體用法:

               Application.Lock-鎖定Application對象所有變量

               Application.Unlock-解鎖Application對象所有變量

        如;

              Application.Lock;

Application("NumCount")=Application("NumCount")+1;(NumCount是在Application_OnStart事件設定的變量)

Application.Unlock;

      Application的應用:

◆可以統計目前上站的人數

◆可以用于網站上不同使用者之間的通信

◆可以記錄廣告條被點選的次數

◆可以在每個首頁上顯示動态資訊

◆可以從資料庫提取資料供多個網頁使用

Session對象

    Session對象是HttpSessionState對象的一個執行個體,其功能和application對象類似,都是用來存儲跨網頁程式的變量或者對象,但他們的有些特性存在差異。

    文法:session[“變量名”]=“變量内容”;  variablesName=session[“變量名”];

Session對象常用的屬性

TimeOut

傳回或設定Session對象變量的有效時間,如果使用者

超過有效時間沒有動作,Session對象就會失效。

預設值為20分鐘

IsCookieless

一個布爾值,表示回話ID是嵌入到URL中,還是存儲在HTTPCookie中

SessionID

擷取回話的唯一标示符

     TimeOut屬性該屬性用來定義使用者Session對象的時限。如果使用者在規定的時間内沒有重新整理網頁,則Session對象就會終止。一般預設為20分鐘。 設定方法,一般在web.config中設定,<sessionState mode=”InProc”timeout=”30”/>

Session對象常用的方法

Abandon

此方法結束目前會話,并清除會話中的所有資訊。

如果使用者随後通路頁面,可以為它建立新會話

(“重建立立”非常有用,這樣使用者就可以得到新的會話)

此方法清除全部的Session對象變量,但不結束會話

向session對象中添加一個新項

删除Session對象中集合中指定的項

該對象的方法比較簡單不在詳細介紹。

       Session對象的應用

       ◆session對象主要用于儲存使用者的各種資訊

       ◆可以通過session對象來判斷此使用者是否是合法使用者

       ◆在伺服器上通過session來區分每一個上網使用者

Application對象和session對象的異同

    生命周期不同。

    Session對象隻針對單一網頁使用者,不同的用戶端無法互相存取。Application對象終止于停止IIS服務,而session對象終止于聯機機器離線時,也就是網頁使用者關閉浏覽器或者超過Session變量的有效時間,Session對象就會消失!

    他們都有OnStart事件和OnEnd事件,也是必須放在Global.asa檔案裡。

    ASP.net的Application和Session對象展現了其他ASP内置對象所沒有的特征--事件。每一個訪客通路伺服器時都會觸發一個OnStart事件(第一個訪客會同時觸發Application和Session的OnStart事件,但Application先于Session),每個訪客的會話結束時都會觸發一個OnEnd事件(最後一個訪客會話結束時會同時觸發Application和Session的OnEnd事件,但Session先于Application)。

     OnStart和OnEnd這兩個事件一般應用在虛拟社群中統計線上人數、修改使用者的線上離線狀态等。要具體定義這兩個事件,需要将代碼寫在Global.asa檔案,并将該檔案放在站點的根目錄下(預設是\Inetpub\wwwroot\)。另外,Application和Session對象規定了在OnEnd事件裡除了Application對象外其他ASP内置對象(Response、Request、Server、Session...)一概不能使用。

    隻有熟練的掌握這連個對象的用法才能更好的進行伺服器程式設計。

     我将在下一篇部落格中介紹Asp.net中的Cookie對象和Server對象,請繼續關注!

繼續閱讀