Web pages rarely be stand alone. Web
applications almost always need to track users who visits multiple pages,
whether to provide personalization, store information about a user or to track
usage for reporting purposes.
Purpose : State management is the process by which you maintain state and page
information over multiple requests for the same or different pages.
Types of State Management
There are 2 types State Management:
1.
Client – Side State Management
This stores information on the client's computer by embedding the information
into a Web page, a uniform resource locator(url), or a cookie. The techniques
available to store the state information at the client end are listed down
below:
a. View State – Asp.Net uses View State to track the values in the Controls.
You can add custom values to the view state. It is used by the Asp.net page
framework to automatically save the values of the page and of each control just
prior to rendering to the page. When the page is posted, one of the first tasks
performed by page processing is to restore view state.
b. Control State – If you create a custom control that requires view state to
work properly, you should use control state to ensure other developers don’t
break your control by disabling view state.
c. Hidden fields – Like view state, hidden fields store data in an HTML form
without displaying it in the user's browser. The data is available only when
the form is processed.
d. Cookies – Cookies store a value in the user's browser that the browser sends
with every page request to the same server. Cookies are the best way to store
state data that must be available for multiple Web pages on a web site.
e. Query Strings - Query strings store values in the URL that are visible to
the user. Use query strings when you want a user to be able to e-mail or
instant message state data with a URL.
2. Server – Side State Management
a. Application State - Application State information is available to all pages,
regardless of which user requests a page.
b. Session State – Session State information is available to all pages opened
by a user during a single visit.
Both application state and session state information is lost when the
application restarts. To persist user data between application restarts, you
can store it using profile properties.
Advantages of Client – Side State
Management:
1. Better Scalability: With server-side state management, each client that
connects to the Web server consumes memory on the Web server. If a Web site has
hundreds or thousands of simultaneous users, the memory consumed by storing
state management information can become a limiting factor. Pushing this burden
to the clients removes that potential bottleneck.
2. Supports multiple Web servers: With client-side state management, you can
distribute incoming requests across multiple Web servers with no changes to
your application because the client provides all the information the Web server
needs to process the request. With server-side state management, if a client
switches servers in the middle of the session, the new server does not
necessarily have access to the client’s state information. You can use multiple
servers with server-side state management, but you need either intelligent
load-balancing (to always forward requests from a client to the same server) or
centralized state management (where state is stored in a central database that
all Web servers access).
Advantages of Server – Side State Management:
1. Better security: Client-side state management information can be captured
(either in transit or while it is stored on the client) or maliciously
modified. Therefore, you should never use client-side state management to store
confidential information, such as a password, authorization level, or
authentication status.
2. Reduced bandwidth: If you store large amounts of state management
information, sending that information back and forth to the client can increase
bandwidth utilization and page load times, potentially increasing your costs
and reducing scalability. The increased bandwidth usage affects mobile clients
most of all, because they often have very slow connections. Instead, you should
store large amounts of state management data (say, more than 1 KB) on the
server.