日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

ASP.NET中的狀態(tài)管理_.Net教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:超簡單實(shí)現(xiàn) .NET開發(fā)類似Web Parts的功能
微軟推出SharePoint2003 ,SharePoint2007以來,一個(gè)新的技術(shù)Web Parts也隨著推出來了。剛一接觸到這個(gè)東西,作為了一個(gè)開發(fā)人員,感到十分的好奇,這雖然算不上一次技術(shù)上的革命,但對用戶的體

我們在ASP中能夠通過cookie、查詢字符串、應(yīng)用程序、對話等輕易地解決這些問題。現(xiàn)在到了ASP.NET環(huán)境中,我們?nèi)匀豢梢允褂眠@些功能,只是它們的種類更多了,功能也更強(qiáng)大了。

  管理互聯(lián)網(wǎng)網(wǎng)頁主要有二種不同的方法:客戶端和服務(wù)器端。

1、客戶端的狀態(tài)管理:

  在客戶端、服務(wù)器之間的多次請求-應(yīng)答期間,服務(wù)器上不保存信息,信息將被存儲(chǔ)在網(wǎng)頁或用戶的計(jì)算機(jī)上。

  A、Cookie

  cookie是存儲(chǔ)在客戶端文件系統(tǒng)的文本文件中或客戶端瀏覽器對話的內(nèi)存中的少量數(shù)據(jù),它主要用來跟蹤數(shù)據(jù)設(shè)置。下面我們舉例說明:假設(shè)我們要定制化一個(gè)歡迎互聯(lián)網(wǎng)網(wǎng)頁,當(dāng)用戶請求缺省的互聯(lián)網(wǎng)網(wǎng)頁時(shí),應(yīng)用程序會(huì)首先檢查用戶在此前是否已經(jīng)注冊,我們可以從cookie中獲取用戶的信息:

[c#]
if (Request.Cookies[“username”]!=null)
lbMessage.text=”Dear “ Request.Cookies[“username”].Value ”, Welcome shopping here!”;
else
lbMessage.text=”Welcome shopping here!”;

  如果要存儲(chǔ)用戶的資料,我們可以使用下面的代碼:

[c#]
Response.Cookies[“username’].Value=username;

   這樣,當(dāng)用戶請求該網(wǎng)頁時(shí),我們就可以方便地識(shí)別該用戶。

  B、隱藏域

  隱藏域不會(huì)顯示在用戶的瀏覽器中,但我們可以象設(shè)置標(biāo)準(zhǔn)控制的屬性那樣設(shè)置其屬性。當(dāng)一個(gè)網(wǎng)頁被提交給服務(wù)器時(shí),隱藏域的內(nèi)容和其他控制的值一塊兒被送到HTTP Form集合中。隱藏域可以是任何存儲(chǔ)在網(wǎng)頁中的與網(wǎng)頁有關(guān)的信息的存儲(chǔ)庫,隱藏域在其value屬性中存儲(chǔ)一個(gè)變量,而且必須被顯性地添加在網(wǎng)頁上。

  ASP.NET中的HtmlInputHidden控制提供了隱藏域的功能。

[c#]
protected System.Web.UI.HtmlControls.HtmlInputHidden Hidden1;
file://給隱藏域賦值
Hidden1.Value=”this is a test”;
file://獲得一個(gè)隱藏域的值
string str=Hidden1.Value;

  需要注意的是,要使用隱藏域,就必須使用HTTP-Post方法提交互聯(lián)網(wǎng)網(wǎng)頁。盡管其名字是隱藏域,但它的值并不是隱藏的,我們可以通過“查看源代碼”功能找到它的值。
  C、狀態(tài)查看

  包括網(wǎng)頁本身在內(nèi)的Web Forms網(wǎng)頁上的每個(gè)控制都有一個(gè)名字為ViewState的屬性,它是一個(gè)自動(dòng)保持網(wǎng)頁和控制狀態(tài)的內(nèi)置結(jié)構(gòu),這意味著在向服務(wù)器提交網(wǎng)頁后,我們無需采取任何措施來恢復(fù)控制的數(shù)據(jù)。
在這里,對我們有用的是ViewState屬性,我們可以利用它來保存與服務(wù)器之間多次的請求-應(yīng)答期間的信息。

[c#]
file://保存信息
ViewState.Add(“shape”,”circle”);
file://獲取信息
string shapes=ViewState[“shape”];

  注意:與隱藏域不同的是,在使用查看源代碼功能時(shí),ViewState屬性的值是不可見的,它們是被壓縮和加密的。
  D、查詢字符串

  查詢字符串提供了一種簡單而受限制的維護(hù)狀態(tài)信息的方法,我們可以方便地將信息從一個(gè)網(wǎng)頁傳遞給另一個(gè)網(wǎng)頁,但大多數(shù)瀏覽器和客戶端裝置都把URL的長度限制在255個(gè)字符長。此外,查詢值是通過URL傳遞給互聯(lián)網(wǎng)的,因此,在有些情況下,安全就成了一個(gè)大問題。

  帶有查詢字符串的URL如下所示:

   http://www.examples.com/list.aspx?categoryid=1&;productid=101

  當(dāng)有客戶端請求list.aspx后,可以通過下面的代碼獲取目錄和產(chǎn)品信息:

[c#]
string categoryid, productid;
categoryid=Request.Params[“categoryid”];
productid=Request.Params[“productid”];

  注意,我們只能使用HTTP-Get提交該互聯(lián)網(wǎng)網(wǎng)頁,否則就不能從查詢字符串獲得需要的值。
  2、服務(wù)器端的狀態(tài)管理

  信息存儲(chǔ)在服務(wù)器上,盡管其安全性較高,但會(huì)占用較多的web服務(wù)器資源。

A、Aplication對象

  Aplication對象提供了一種讓所有在Web應(yīng)用服務(wù)器中運(yùn)行的代碼訪問的存儲(chǔ)數(shù)據(jù)的機(jī)制,插入應(yīng)用程序?qū)ο鬆顟B(tài)變量的數(shù)據(jù)應(yīng)該能夠被多個(gè)對話共享,而且不會(huì)頻繁地改變。正是因?yàn)樗軌虮蝗繎?yīng)用程序所訪問,因此,我們需要使用Lock和UnLock對避免其中的值出現(xiàn)沖突。


[c#]
Application.Lock();
Application[“mydata”]=”mydata”;
Application.UnLock();

  B、Session對象

  Session對象可以用來存儲(chǔ)需要在服務(wù)器的多次請求-應(yīng)答期間和對網(wǎng)頁的請求期間進(jìn)行維護(hù)的指定對話的信息。Session對象是每個(gè)對話的存在的基礎(chǔ),也就是說不同的客戶端生成不同的Session對象。存儲(chǔ)在對話狀態(tài)變量中的數(shù)據(jù)存在的周期較短。

  每個(gè)活動(dòng)的ASP.NET對話是由一個(gè)包含合法的URL ASCII字符、長度為120位的SessionID字符串唯一確定和跟蹤的。SessionID的值是由一個(gè)能夠保證唯一性的算法生成的,以便對話之間不會(huì)沖突,SessionID的隨意性使得我們很難猜測出一介現(xiàn)有對話的ID。

  根據(jù)應(yīng)用程序的配置設(shè)置情況,SessionID通過HTTP cookie或修改后的URL在客戶端-服務(wù)器請求之間進(jìn)行傳輸。那么,如何設(shè)置應(yīng)用程序配置的對話裝備方法。

  每個(gè)web應(yīng)用程序必須有一個(gè)名字為web.config的配置文件,它是基于xml(標(biāo)準(zhǔn)化越來越近了)文件的。下面是一個(gè)名字為sessionState的對話:


  cookieless選項(xiàng)的值為true或false。當(dāng)其值為false(缺省值)時(shí),ASP.NET將使用HTTP cookie來識(shí)別用戶;當(dāng)其值是true時(shí),ASP.NET將隨機(jī)地生成一個(gè)唯一的號(hào)碼,并將它放在被請求的文件的前面,這一號(hào)碼是用來識(shí)別用戶的,我們能夠在IE的地址欄中看到它:

  http://localhost/Management/(2yzakzez3eqxut45ukyzq3qp)/Default.aspx
  OK,下面我們再回到session對象。

[c#]
file://存儲(chǔ)信息
Session[“myname”]=”Mike”;
file://獲得信息
myname=Session[“myname”];

  C、數(shù)據(jù)庫

  數(shù)據(jù)庫將使我們能夠存儲(chǔ)大量的與Web應(yīng)用程序中的狀態(tài)相關(guān)的信息,有時(shí),用戶會(huì)使用唯一的ID頻繁地訪問數(shù)據(jù)庫,我們可以將它存儲(chǔ)在數(shù)據(jù)庫中,在對網(wǎng)站中網(wǎng)頁的多次請求中使用。
  總結(jié)

  ASP.NET中的功能和工具比ASP中更多,使我們能夠更有效和高效地管理網(wǎng)頁的狀態(tài)。具體選擇哪種方法與你的應(yīng)用程序有關(guān),在選擇時(shí)可以考慮下面的問題:

  ·需要存儲(chǔ)多少信息?
  ·客戶端接受持久的還是內(nèi)存中的cookie?
  ·希望在客戶端還是在服務(wù)器端存儲(chǔ)信?
  ·要存儲(chǔ)的信息需要保密嗎?  
  ·希望你的網(wǎng)頁的性能如何?

分享:數(shù)據(jù)訪問層的第一種實(shí)現(xiàn):Access SQL
經(jīng)過上面篇文章的介紹,整個(gè)系統(tǒng)的框架算是基本搭建完了,下面,我們要具體實(shí)現(xiàn)各個(gè)層次。關(guān)于數(shù)據(jù)訪問層的實(shí)現(xiàn),我準(zhǔn)備討論三種實(shí)現(xiàn)方式,這一篇文章討論第一種:Access 動(dòng)態(tài)生成SQL。 顧名

來源:模板無憂//所屬分類:.Net教程/更新時(shí)間:2008-08-22
相關(guān).Net教程