【轉】ASP.NET中的狀態管理

原文地址:http://blog.csdn.net/zhoufoxcn/article/details/1495822


 

Session 會話

l         區分客戶端,不區分頁面

l         數據量會隨着客戶端(併發)數量的增多,而增多

l         服務器端存儲什麼:數據存儲在服務器端(InProc,StateServer,SqlServer)

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頁面集成,以及長期保存的數據


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章