ViewState 与 SessionState
众所周知,网络是无状态的,这意味着每次请求特定的网页。每次都会重新创建并发布到服务器。此外,HTTP 是一种无状态协议,即它不能保存网页上的客户端信息。所以它需要维护一个页面的状态和服务器端的状态,状态管理就完成了。 ViewState 和 SessionState 分别用于客户端状态管理和服务器端状态管理。两者的基本区别在于,ViewState 是在客户端管理状态,方便最终用户进行状态管理,而 SessionState 是在服务器端管理状态,也便于管理该端的内容。
ViewState:它只维护在一个级别,即页面级别。在单个页面上所做的更改在其他页面上不可见。在视图状态中收集的信息仅为客户端存储,不能转移到任何其他地方。视图状态仅与可序列化数据同义。
ViewState 倾向于持久化页面实例特定的数据。当使用视图状态时,特定页面发布的值会保留在客户端正在使用的浏览区域中,并且仅在整个操作完成后才会回发。加载另一页时,前一页的数据不再可用。此外,在这种情况下,数据也不安全,因为它暴露给客户端。加密可用于数据安全。
SessionState:在会话级别进行维护,可以跨 Web 应用程序中的所有页面访问数据。信息存储在服务器中,任何有权访问存储信息的服务器的人都可以访问该信息。
SessionState 具有持久化用户特定数据的趋势,并在服务器端进行维护。在会话完成或用户关闭浏览器之前,此数据一直可用。会话状态仅对类型对象有效。
ViewState 和 SessionState 的区别:
ViewState | SessionState |
---|---|
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它可用于存储您希望从同一网页访问的信息。