ASP.NET中的狀態管理

技術小甜發表於2017-11-16


Session 會話

l 區分客戶端,不區分頁面
l 資料量會隨著客戶端(併發)數量的增多,而增多
l 伺服器端儲存什麼:資料儲存在伺服器端(InProcStateServerSqlServer)
l 客戶端儲存什麼:客戶端儲存的是SessionID
l 有過期策略
l 適用場合:與使用者相關的資料,購物車,使用者帳號,
 
Application狀態
l 全域性資料,所有客戶端共享:不區分客戶端,不區分頁面
l 伺服器端儲存什麼:資料儲存在伺服器端(伺服器程式內)
l 客戶端儲存什麼:客戶端不儲存任何與Application狀態資料
l 可能有多執行緒併發訪問的問題,需要同步(Lock/Unlock
l 適用場合:全域性性的資料,在Application_Start內初始化,然後在其他頁面中訪問
 
ViewState檢視狀態
l 區分客戶端,區分頁面
l 伺服器端儲存什麼:資料在伺服器和客戶端(頁面資料)來回穿梭
l 客戶端儲存什麼:資料在伺服器和客戶端(頁面資料)來回穿梭
l 適用場合:單一頁面上的臨時性資料,用於使用者和一個頁面之間的來回互動。
l 安全性比較低
 
頁面上的例項欄位
l 區分客戶端,區分頁面,而且區分前後不同的請求
l 生存期極短,只在伺服器處理頁面的過程中有效
l 適用場合範圍較窄
 
 
靜態欄位
l 全域性資料,所有客戶端共享:不區分客戶端,不區分頁面
l 伺服器端儲存什麼:資料儲存在伺服器端(伺服器程式內)
l 客戶端儲存什麼:客戶端不儲存任何static狀態資料
l 可能有多執行緒併發訪問的問題,同步需要自己編寫程式碼(不如Application方便
l 適用場合:全域性性的資料,在任何需要的地方內初始化,然後在其他頁面中訪問
 
查詢字串 Query String
l 區分客戶端,在兩個相鄰的頁面之間共享(通過位址列上資料)
l 伺服器端儲存什麼:資料在伺服器和客戶端瀏覽器位址列中互動
l 客戶端儲存什麼:資料在伺服器和客戶端瀏覽器位址列中互動
l 適用場合:作為資料查詢的分離關鍵字,支援copy或儲存。喪失安全性異構網站系統(JSP, ASP, PHP)ASP.NET頁面整合
 
Input
l 區分客戶端,在兩個相鄰的頁面之間共享(通過位址列上資料)
l 伺服器端儲存什麼:資料從客戶端頁面上post給伺服器
l 客戶端儲存什麼:資料從客戶端頁面上post給伺服器
l 適用場合:異構網站系統(JSP, ASP, PHP)ASP.NET頁面整合
 


Cookie
l 區分客戶端,不區分頁面
l 伺服器端儲存什麼:伺服器不儲存Cookie資料
l 客戶端儲存什麼:存放Cookie資料
l 有過期策略

l 適用場合:異構網站系統(JSP, ASP, PHP)ASP.NET頁面整合,以及長期儲存的資料





















本文轉自周金橋51CTO部落格,原文連結:http://blog.51cto.com/zhoufoxcn/166976 ,如需轉載請自行聯絡原作者


相關文章