asp.net之狀態管理分類

來源:互聯網
上載者:User

檢視狀態是在頁面內的
cookie而abc.aspx?page=1&id=5;
伺服器端的狀態管理
(Application)應用程式狀態,是一個全域的狀態
工作階段狀態(session)
資料庫

對於應用程式狀態,位於應用程式根目錄下(虛擬目錄,和虛擬目錄的狀態,一個虛擬目錄也可以當成一個應用程式根目錄 一般是 Gloabal.asax),使用者不可以瀏覽(它沒有使用者介面).不響應頁面請求.
具體的執行個體:
  

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;

namespace WebApplication1
{
    public class Global : System.Web.HttpApplication
    {

        protected void Application_Start(object sender, EventArgs e)
        {

        }

        protected void Application_End(object sender, EventArgs e)
        {

        }
    }
}

   缺點:記憶體佔用.同步問題(鎖定問題,多人訪問的時候會有鎖定的過程,否則會出現死結等問題).生命週期(直到機器發生故障<iis發生故障>)
它的賦值:
    Application["var_name"]=name;
取值:
   var_name=Application["var_name"];
同步:
Application.lock()
Application.Unlock()

如:做聊天室線上人數的統計 設計思路:
   網站運行,初始化統計變數;
   使用者進入,統計變數加1;
   使用者退出,統計變數減1;
   要求:使用者重新整理頁面,統計變數不變;
  
詳細代碼:default.aspx---使用者登陸
         chat.aspx-----登陸成功後的介面
         global.asax----應用程式
  

//default.aspx
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Application.Lock();
            Application["user"] = (int)Application["user"] + 1;
            Application.UnLock();
            Response.Redirect("chat.aspx?username=" + TextBox1.Text);
        }
    }
}

//chat.aspx
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Application.Lock();
            Application["user"] = (int)Application["user"] + 1;
            Application.UnLock();
            Response.Redirect("chat.aspx?username=" + TextBox1.Text);
        }
    }
}
//global.asax
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;

namespace WebApplication1
{
    public class Global : System.Web.HttpApplication
    {

        protected void Application_Start(object sender, EventArgs e)
        {
            Application["user"] = 0;
        }

        protected void Application_End(object sender, EventArgs e)
        {
            Application.Lock();
            Application["user"] = (int)Application["user"] - 1;
            Application.UnLock();
        }                                                           
                                                                                                                                                                                                                                                                                                                                                                                                                
    }
}

 解果:---抱歉   不知道該怎麼上傳,傳了幾次都不可以.這裡我們省略了驗證部分
                                                   
缺點:Vs2005的上述代碼對瀏覽器的關閉沒有反應,怎麼弄?
接下來我們說說Session
它與瀏覽器同在,儲存在記憶體中,有生命週期(timeout設定周期,一般是20min),所以它可以強制的終止,session.abandon()
賦值:
Session["var_name"]=var_name;
Var_name=Session{"var_name"};
常用屬性
SessionID
IsNewSession
Timeout
常用方法
Session.Abandon();//放棄這個Session
Session.Removeall();//把所有的Session都清空掉
Session.Remove("a");//把含有a的session都給remove掉
Ada("")//有加的操作
接下來我們用一個使用者名稱和密碼的傳遞來說明

viewState的特點
資訊作為頁面內往返時,ViewState工作
資訊作為隱藏欄位進行儲存
頁面存在,ViewState就存在
//它沒有自動到期的問題,這是和Session的區別之一,如果錄入成績的時候,可以防止到期,這是優點

Cookie的特點
資訊儲存在用戶端
生命週期可以自行設定
資料存放區容量有限制(小於4096B)
瀏覽器可能不支援
像一些投票,我們只要把Cookie給刪除,就可以投票投好多次呢,因為它用來驗證誰的IP是放在本地的
把表的內容放入到資料庫裡---(買書的購物車)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.