2010-09-10

[Asp.Net][筆記]cookies、session、application

  • Cookies:
       cookies是一種儲存在 client 端的資訊,用來讓 Web Server能夠追蹤使用者資訊,如使用者帳號、密碼等。在日常生活上,您透過瀏覽器接收 E-Mail 時,須輸入使用者帳號和密碼,可能第一次輸入後,下次再使用便發覺,咦!奇怪!我的帳號怎麼自動顯示在上面了,這現象便是 Cookies 的功勞。
       而 Cookies 又分為兩種模式:一為連線階段的 cookies(未儲存),二為儲存在電腦上的 cookies。

        第一種 cookies,只存在於連線狀態下,當過了 timeout時間或是瀏覽器關閉,其資訊便會消失。
        第二種 cookies,即使瀏覽器關閉了,但其資訊仍會存在於 Client端電腦,其資訊包含 Web Server 所在及執行何程式和所需保留的資料,當下次再連線時,資訊便可帶出。而其資料可在 Client端保留多久可由 Expires 屬性設定。
  • Session:
        其意義類似第一種連線階段的 cookies,它不會儲存在使用者的硬碟中,但它需要啟動連線階段的 cookies功能才能運作。

   ◎ 它的運作方式為:當 Client 向 Web Server 提出連線的請求時,如果有用到 Session 的功能,那麼 Server 會把連線的時間、Client的位置、欲保留的資料儲存在 Server端,並在 Http Header 部分加上連線 session id〈在Header Cookies欄位可發現〉,此 id 是和Server 相呼應的,如此再度連線時,Server 才能藉此判斷連線來源。除了 session id 外,還有連線時間〈注意:Client 端是不存欲保留資料的〉。
        我們可以設定 session 的 TimeOut 時間,每次有連線動作發生,TimeOut 時間都會重新開始計算。一但 TimeOut 時間到了,此Session便會消失。〈TimeOut時間並非抓系統時間來算,所以改系統時間的方式是不影響TimeOut的〉
  • Application:
        Web Base Ap 是允許多人共同存取的,對於使用者範圍的變數我們可以用 Session物件來處理,但若是應用程式層級的資料〈如:現在線上有幾人、網站瀏覽次數等...〉我們該如何處理呢?
        或許您會想到使用 Server端的檔案或資料庫儲存,沒錯這是一個方式但 ASP 提供了我們一個更簡單的方式,使用 application 物件。
        它提供了使用同一應用程式的使用者,彼此分享資訊。而且還提供Lock和 UnLock方法,以避免多使用者同時更改某一屬性值。
   ◎ 須注意一但 IIS 重新啟動後,其 Application 的變數值,可是會消失的喲!因此,其用法需配合您的實際需求,如:計算現在線上人數就很適合。但若是網站開站到現在瀏覽人次,使用檔案或資料庫的方式可能會比較好。
比較:
        a. cookies & session:session可說是連線階段的 cookies。
        b. session & application:
            ‧session是使用者層級的物件。
            ‧application是應用程式層級的物件。
Global.asax
        此檔案可用來處理application、session物件起始或結束時需要執行的動作。需放在 Web 虛擬根目錄下。

    ‧執行順序為:Application_OnStart → Session_OnStart →Session_OnEnd → Application_OnEnd

沒有留言:

張貼留言