📜  ViewState 与 SessionState

📅  最后修改于: 2022-05-13 01:56:45.780000             🧑  作者: Mango

ViewState 与 SessionState

众所周知,网络是无状态的,这意味着每次请求特定的网页。每次都会重新创建并发布到服务器。此外,HTTP 是一种无状态协议,即它不能保存网页上的客户端信息。所以它需要维护一个页面的状态和服务器端的状态,状态管理就完成了。 ViewState 和 SessionState 分别用于客户端状态管理和服务器端状态管理。两者的基本区别在于,ViewState 是在客户端管理状态,方便最终用户进行状态管理,而 SessionState 是在服务器端管理状态,也便于管理该端的内容。

ViewState:它只维护在一个级别,即页面级别。在单个页面上所做的更改在其他页面上不可见。在视图状态中收集的信息仅为客户端存储,不能转移到任何其他地方。视图状态仅与可序列化数据同义。

ViewState 倾向于持久化页面实例特定的数据。当使用视图状态时,特定页面发布的值会保留在客户端正在使用的浏览区域中,并且仅在整个操作完成后才会回发。加载另一页时,前一页的数据不再可用。此外,在这种情况下,数据也不安全,因为它暴露给客户端。加密可用于数据安全。

SessionState:在会话级别进行维护,可以跨 Web 应用程序中的所有页面访问数据。信息存储在服务器中,任何有权访问存储信息的服务器的人都可以访问该信息。

SessionState 具有持久化用户特定数据的趋势,并在服务器端进行维护。在会话完成或用户关闭浏览器之前,此数据一直可用。会话状态仅对类型对象有效。

ViewState 和 SessionState 的区别:

ViewStateSessionState
Maintained at page level only.Maintained at session level.
View state can only be visible from a single page and not multiple pages.Session state value availability is across all pages available in a user session.
It will retain values in the event of a postback operation occurring.In session state, user data remains in the server. Data is available to user until the browser is closed or there is session expiration.
Information is stored on the client’s end only.Information is stored on the server.
used to allow the persistence of page-instance-specific data.used for the persistence of user-specific data on the server’s end.
ViewState values are lost/cleared when new page is loaded.SessionState can be cleared by programmer or user or in case of timeouts.

用法:

  • SessionState:它可用于存储您希望在不同网页上访问的信息。
  • ViewState它可用于存储您希望从同一网页访问的信息。