1. 程式人生 > >C#中Cookie,Session,Application的用法與區別?

C#中Cookie,Session,Application的用法與區別?

1.Application 儲存在服務端,沒有時間限制,伺服器關閉即銷燬(前提是自己沒寫銷燬方法) 
2.Session 儲存在服務端,客戶端(瀏覽器)關閉即銷燬(若長時間不使用 且 瀏覽器未關閉的情況下, 預設自動銷燬時間為20分鐘) 

3.Cookie 儲存在客戶端,由使用者自己銷燬

application:
程式全域性變數物件,對每個使用者每個頁面都有效
session:
使用者全域性變數,對於該使用者的所有操作過程都有效
cookie:
客戶端資訊存放物件,可以把使用者的資訊儲存在使用者的本地,
不必總是訪問伺服器
Application用於儲存所有使用者共用的資料資訊,如果被儲存的資料在應用程式生存期內根本不會改變或很少改變,用它。但是在asp.net中有個web.config,可能更好點。如果要使用application,一個需要考慮的問題是任何寫操作都有要在application_onstart事件中(Global.asax)中完成。儘管使用application.lock和application.unlock方法來避免操作的同步,但是它

序列化了對application的請求,當網站訪問量大時會造成效能瓶頸。因此最好不要用它存取大的資料集
使用方法:
//存放資訊
Application["test"] = "100";
//讀取
String test = Application["test"].ToString();

Session 用於儲存每個使用者的專用資訊,它的生存期是使用者持續請求時間再加上一段時間(可以在web.config中設定,預設是20分鐘)。Session中的資訊儲存在伺服器的記憶體中,當然你也可以設定它的儲存方法(如存在SQL資料庫中)。由於使用者停止使用程式後它仍然在記憶體中保持一段時間,因此使用Session物件儲存使用者資料的方法效率很低。對於小量的資料。使用Session還是一個不錯的選擇。
//存
Session["user"] = "majcms";
//取
String username = Session["user"].ToString();

Cookie用於儲存客戶瀏覽器請求伺服器頁面的請求資訊,
程式設計師
也可以用它儲存非敏感性的內容。儲存時間可以根據需要設定。如果沒有設定Cookie失效時間,它僅儲存至瀏覽器關閉。如果將Cookie設定為Min Value,則表示它永不過期。Cookie儲存量受到很大限制,一般瀏覽器支援最大容量為4096位元組。因此不能用來儲存大量資料。由於並非所有瀏覽器都支援Cookie,並且它是以明文方式儲存的,所以最好不要儲存敏感性的內容。否則會影響網路安全
//存
Response.Cookies["name"].Value = "majcms";
//取
String username = Response.Cookies["name"].Value;

session: 該物件是HttpSession 型別的物件,描述一個客戶端與伺服器之間的一次通話時
段,該段時間內包含客戶端的若干次請求和伺服器的相應響應,整個時間段session 物件都
存在。常用來實現購物車之類的儲存當前使用者的資料。不同使用者有各自的不同session 物件。
application: 該物件是ServletContext 型別的物件,描述的是本身Web 程式。該物件在
Web 程式部署到tomcat 伺服器時由容器產生,其生命週期至Web 程式從tomcat
伺服器卸載出去時消失。是所有客戶端能共享的一個
全域性物件,整個系統只有一份。
Cookie以檔案的形式儲存的請求資訊