text:
Design and Implementation Guidelines for Web Clients
|Retired Content
|This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies.
This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
November 2003
Applies to:
Microsoft .NET Framework
Summary: This chapter describes the types of state used in the presentation layer and offers guidance about how to manage state in applications written for the Web. Correct state management is critical to the scalability and availability of Web applications.
Understanding Presentation Layer State
Planning State Management for Web Applications
In This Chapter
This chapter describes how to manage state in the presentation layer in Web applications. The chapter includes the following sections:
- Understanding Presentation Layer State
- Planning State Management for Web Applications
State management is an important aspect of many applications. In the presentation layer, you frequently have to store information about the state of the application or keep track of user state information. Some examples of state include:
- The identity of the current user
- The contents of a shopping cart
- The current step in a navigation flow of the application
- A database connection string
When designing your application, you have to make decisions about how to handle state management, including what to store, where to store it, and how long information will be kept.
The Microsoft .NET Framework provides access to a rich set of state management mechanisms for both Windows-based and Web applications. This chapter describes state management mechanisms for Web applications.
Before looking at the individual mechanisms for state management, make sure that you understand the nature of application state to select the most appropriate mechanism.
Understanding Presentation Layer State
Three characteristics of state determine the state management mechanism most appropriate to your requirements. These three characteristics are:
- State lifetime
- State scope
- State type
The next sections describe each of these characteristics.
Determining State Lifetime
The lifetime of state refers to the period when that state is valid. Table 5.1 lists the common lifetime periods you use in your presentation layer.
Table 5.1: Common Lifetimes for Application State
|State lifetime
|Data that is always valid
|Information stored in a database
|Data that is valid only within the scope of a particular process
|The process a user must go through to add an item to a shopping cart in an online store
|Data that is valid only within the scope of a single session for a single user
|The contents of a user's shopping cart
|Data that is valid only within the scope of a single message or data exchange
|The checkout request made by a user
|Time span
|Data that is valid only until a particular date and time
|A coupon code that expires in two weeks
During the design process you must identify the most appropriate lifetime for your user interface state.
Determining State Scope
The scope of state defines the accessibility of an application's state. Scope is additionally divided as follows:
- Physical scope
- Logical scope
The following sections describe the various kinds of physical and logical scope available.
Determining Physical Scope
Physical scope defines the physical locations that state can be accessed from. Table 5.2 lists common physical scopes for application state.
Table 5.2: Common Physical Scopes for Application State
|State Physical Scope
|State is accessible to all applications in an organization
|Organizational information stored in Microsoft Active Directory® directory service
|State is accessible to all computers in an application farm
|Information stored in a shared database associated with the farm
|State is accessible to all applications running on a computer
|Information stored on the file system or a local database (with no restricting permissions)
|State is accessible to multiple application domains running in the same process
|Identity of the process
|Application Domain
|State is accessible only to code running in a single application domain
|Objects stored in the application domain's CurrentDomain property
When designing your presentation layer, consider the affect of the various options for physical state storage locations, and select the most appropriate one for your application.
Determining Logical Scope
Logical scope defines the logical locations where state can be accessed. Table 5.3 lists common logical scopes for application state.
Table 5.3: Common Logical Scopes for Application State
|State Logical Scope
|State is accessible only in a certain application
|Application-specific information stored in a database
|Business Process
|State is accessible only to elements of a single business process
|A purchase order being built by a business process
|State is accessible only to a particular role or group of users
|Payroll information
|State is accessible only to a particular user
|The contents of a specific user's shopping cart
|State is only relevant to a particular form, page, or control
|The contents of a data grid
Selecting the correct logical scope for your presentation layer state is important because it has a significant affect on security and performance.
Determining State Type
The purpose, content, and quantity of state data are important factors when determining the state management mechanism to implement. Table 5.4 lists the characteristics of state that have the most effect on your choice of state management mechanism.
Table 5.4: Common Types of Application State
|State Type
|Secret / Sensitive
|Information that is intended for a specific audience
|Bank account transactions; private key used for encryption
|Information that is not restricted in who, what, or both, that can see it
|Public key used for encryption; hit count for a Web site
|Information that is stored in an object such as a DataSet or a Hashtable
|The working set for a user performing an administration task offline
|Information that is stored in a single value
|The number of times a user has executed an application
|State that takes up a large amount of storage space
|The daily order report for a large e-commerce Web site
|State that takes up a small amount of storage space
|The user ID of the user logged in to the application
|Information that must be stored in a permanent medium to survive, for example, computer reboots
|A submitted customer order
|Information that is not required to be stored in a permanent medium
|The current page that a user is on in a Web application
You must be familiar with the types of state your presentation layer must manage. Most applications use a combination of the state types listed in Table 5.4.
Planning State Management for Web Applications
Applications based on Web Forms are inherently stateless, but it is frequently necessary for an application to keep track of state information. ASP.NET simplifies state management by providing access to a variety of client-side and server-side state management mechanisms:
- Client-side state management mechanismsCookies, hidden form fields, query strings, and the ViewState property.
- Server-side state management mechanismsSession state, application state, and a database.
Table 5.5 lists these mechanisms and provides an indication of the state lifetime, scope, and type that the particular mechanism is most appropriate for.
Table 5.5: State Management Mechanisms for Web Applications
|Physical Scope
|Logical Scope
|Session object: In-process
|Session object: State server
|Session object: SQL Server
Time span
|Web farm
|Application, User
|Small, non-essential, insensitive
|Hidden form fields
|Web farm
|Application, User, View
|Small, non-essential, insensitive
|Query strings (URL fields)
|Web farm
|Small, non-essential, insensitive
|Web farm
|Small, non-essential, insensitive
|Application object
The following sections describe each of the state storage mechanisms listed in Table 5.5. Each section provides:
- An overview of the mechanism
- Guidance on when to use the mechanism, and points to consider before deciding to use the mechanism
- Sample code and configuration settings, to show how to use the mechanism
When planning your Web application, use the following guidance to identify and implement the most appropriate state storage mechanism for your presentation layer.
Note If you want to encapsulate the choice of state storage mechanism in an ASP.NET Web application, you can use the Microsoft User Interface Process Application Block to manage state storage. You can configure the block to use the Session object or SQL Server to store state information.
For more information about using this block to manage state storage, see the "To create a controller class" procedure in Chapter 2 of this guide.
Storing State in the Session Object
By default, whenever a new client connects to an ASP.NET application, ASP.NET creates a cookie on the client containing a unique session identifier (ID). With each subsequent request, the client passes the cookie to the application. This allows the application to maintain context across a series of stateless Web requests. If the client or application is configured to disallow cookies, ASP.NET encodes the session ID as part of the URL the client uses when making requests to the application.
The Session object provides a state store that is unique for each session. Internally, ASP.NET manages Session objects for each active client session and makes the appropriate Session object available in your application through the Session property of the System.Web.UI.Page class, where all Web Forms pages inherit from.
The benefits of using the Session object include:
- The ASP.NET runtime manages the mapping of the session ID to session data.
- State data is easily accessible through the page-level Session property.
- You can configure a timeout after which ASP.NET terminates an inactive Session and disposes of the state for that session.
- State is not transmitted to clients, so this mechanism is efficient for network bandwidth purposes and more secure than mechanisms such as cookies and hidden form fields.
- Session management events can be raised and used by your application.
- Data placed in session-state variables can survive Internet Information Services (IIS) restarts and worker-process restarts without losing session data, because the data is stored in another process space.
- Session state can be used in both multi-computer and multi-process configurations, thereby improving scalability.
- Session state works with browsers that do not support HTTP cookies, although session state is most commonly used with cookies to provide user identification facilities to a Web application.
In addition to these benefits, you can configure the Session object to use one of the following three backing stores:
- In process
- State server
- SQL Server
Each backing store is described in the following sections.
Note It is also possible to disable session state storage. To do this, add a <sessionState mode="Off"/> element to the <system.web> section of the Web.config file for your ASP.NET Web application.
Storing State in the In-Process Session Object
Using in-process session state in ASP.NET is closely analogous to using the classic ASP session state and is the default mechanism for managing state in an ASP.NET application. Session state is stored and managed in-process (using the Aspnet_wp.exe process); when that process recycles, the session state that was stored in it is lost.
The main benefit of storing state in-process is performance: the reading and updating of session state occurs much faster when that state information is stored in memory in the same process as the ASP.NET application, because there is no additional overhead for cross-process, network, or database communications.
Use the in-process Session object when:
- You have to store small or medium amounts of state information.
- You require high performance data access.
- You do not require durability; in-process Session object data does not survive computer reboot, IIS reset, or application domain unloading.
- Your application is hosted on a single server.
Before deciding to use the in-process Session object, consider the following points:
- In-process session state is the fastest of the three available backing stores for the Session object.
- The state information cannot be shared between multiple computers. If your application is running in a Web farm, you have to make sure that individual users are pinned to a specific server, or their state information will be lost as they bounce between the various servers in the Web farm.
- As the amount of state information stored in-process increases, so does the memory required to store that information. As more and more information is added to the in-process session state, the performance of the whole application may be degraded because it takes longer to access and modify the state information.
If in-process session state is appropriate for your application, you can configure it in the Web.config file associated with your ASP.NET Web site.
Note The settings in Web.config take precedence over any machine-wide settings defined in the machine.config file. If you want to define machine-wide state management settings, edit machine.config instead of Web.config file.
- If you are using version 1.1 of the .NET Framework, machine.config is located in the %windir%\Microsoft.NET\Framework\v1.1.4322\Config folder.
- If you are using version 1.0 of the .NET Framework, machine.config is located in the %windir%\Microsoft.NET\Framework\v1.0.3705\Config folder.
To configure the in-process Session object
- In the application's Web.config file (or in the computer-wide machine.config file if you prefer), add the <sessionState> element if it is not already there.
- In the <sessionState> element, set the mode attribute to "InProc".
This causes the Session object to be stored in the Aspnet_wp.exe process for the ASP.NET application.
- If you want to specify a timeout period after which state for an idle process will be discarded, set the timeout attribute in the <sessionState> element. The default timeout period is 20 minutes.
The following example illustrates these points.
<configuration> <system.web> <sessionState mode="InProc" timeout="10"/> </system.web> </configuration>
This example specifies in-process session management, with a timeout period of 10 minutes.
Storing State in the State Server-based Session Object
Another option for storing session state in an ASP.NET application is out-of-process, by using a state server process. When you use this option, session state is stored in the Aspnet_state.exe process; this process runs as a service and may be located on a separate state server. Using a state server allows applications running in a Web farm to access shared state information.
State information stored in a state server is not lost when a particular application recycles. However, the data is still transient: if the state server recycles, the state information is lost.
Use the state server-based Session object when:
- You have to share state information between multiple applications or multiple computers.
- You do not require durability. Data does not survive reboots of the state server.
Before deciding to use the state server-based Session object, you must consider the following points:
- Using out-of-process session state is slower than in-process session state.
- The state service does not require authentication.
- Network traffic between the application and state service is not encrypted. For security reasons, it is best to not run the state service on a server that is directly accessible through the Internet.
- Communications between applications and the state server use the well-understood (and plain-text) HTTP protocol. It is a good idea to encrypt traffic between the application and state server using Internet Protocol Security (IPSec). For detailed information about IPSec, see Chapter 4 of "Building Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication" on MSDN (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/secnetlpMSDN.asp).
- Information stored in a state server must be serialized; for more information, see "Serializing State" later in this chapter.
- The IP address or network name of the state server must be specified in Web.config.
If state server-based session state is appropriate for your application, you can configure it in the Web.config file associated with your ASP.NET Web site (or in machine.config)..
To configure the state server-based Session object
- Make sure that the state service (Aspnet_state.exe) is running on the state server computer.
- The default port used by the state service is the "well-known" port number, 42424, making this an easy target for attack. To change the port number, set the value in the HKLM\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\"Port" registry key.
- In the Web.config file for your Web application (or in the computer-wide machine.config file if you prefer), add the <sessionState> element if it is not already there.
- In the <sessionState> element, set the mode attribute to "StateServer". Also set the stateConnectionString attribute to the IP address or network name of the state server, and indicate the port number the state service is running on.
Optionally, also set the stateNetworkTimeout attribute to the number of seconds that the ASP.NET Web application will wait for the state server to respond to network requests. The default value is 10 seconds, but there are many factors that might warrant a higher timeout value, such as if the state server or the Web server are overloaded.
The following example illustrates these points.
<configuration> <system.web> <sessionState mode="StateServer" stateConnectionString="tcpip=myStateServer:42424" stateNetworkTimeout="20"/> </system.web> </configuration>
This example specifies state server-based session management. The state service is running on a computer named myStateServer and is accessed through port 42424. A timeout period of 20 seconds has been specified.
Storing State in the SQL Server-based Session Object
Another option for storing session state for ASP.NET applications is to use SQL Server. Using SQL Server to store session state provides several benefits:
- State can survive SQL Server restarts, if it uses a database other than the default database, TEMPDB.
- You can share state between multiple instances of your Web application in a Web farm.
- You can take advantage of clustering; this persists the state if SQL Server stops unexpectedly.
The following sections describe when and how to store state in the SQL Server-based Session object.
Use the SQL Server-based Session object when:
- You have to share state information between multiple applications or multiple computers.
- You require fine-grained security control over who is permitted to access the data.
- Your state information must be durable.
Before deciding to use the SQL Server-based Session object, consider the following points:
- Using SQL Server for session state also allows user tasks in your application to span multiple sessions and devices.
- Using SQL Server to store session state is slower than using the in-process and state server-based Session object options.
- Session state stored in SQL Server must be serialized; for more information, see "Serializing State" later in this chapter.
- If the connection string used to connect to the SQL state server uses integrated security, your ASP.NET application must use impersonation. For information about how to use impersonation in ASP.NET applications, see Chapter 8 of Building Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication on MSDN (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/secnetlpMSDN.asp).
- SQL Server can use clustering and failover to make sure state data is available.
- Using SQL Server allows you to perform external backup of long-lived state data.
If SQL Server-based session state is appropriate for your application, you must configure the application to connect to the appropriate database server.
To configure the SQL Server-based Session object
- Configure SQL Server to handle Session object state. To do this, run the InstallSqlState.sql script on the computer that is running SQL Server. By default, the script is located in the \systemroot\Microsoft.NET\Framework\version folder.
This script creates the necessary databases, tables, and stored procedures to support session state storage.
- In the Web.config file for your Web application (or in the computer-wide machine.config file if you prefer), add the <sessionState> element if it is not already there.
- In the <sessionState> element, set the mode attribute to "SQLServer". Also set the sqlConnectionString, to configure the database connection.
The following example illustrates these points.
<configuration> <system.web> <sessionState mode="SQLServer" sqlConnectionString="datasource=x; user id=y; password=z"/> </system.web> </configuration>
Note If you are using version 1.1.4322 of the .NET Framework, you may choose to run the InstallPersistSqlState.sql script instead of running InstallSqlState.sql. The InstallPersistSqlState.sql script adds state management tables to the ASPState database instead of to the TempDB database, so that session state survives a restart of the state server.
If you use the InstallSqlState.sql script, the SQL state server uses TempDB to store state information. For details about how to configure persistent state in versions of the .NET Framework earlier than 1.1.4322, see article 311209, "HOW TO: Configure ASP.NET for Persistent SQL Server Session State Management," in the Microsoft Knowledge Base (http://support.microsoft.com//).
Using the Session Object
Whichever underlying storage mechanism you choose to use for the Session object, it does not affect how you use the object in your ASP.NET Web application code.
The System.Web.UI.Page class has a Session property that returns a System.Web.SessionState.HttpSessionState object; through this object you can manipulate the contents of the Session object associated with the current user session. State items are held as Object references in HttpSessionState.
The HttpSessionState class provides properties and methods to manipulate the collection's contents, enabling you to add and remove collection elements, get and set specific data elements, enumerate the collection, and clear the collection.
The following code sample shows how to set Session object state, by using the C# indexer of the HttpSessionState class.
Session["username"] = "myUserName"; Session["lastvisit"] = DateTime.Now;
The following code sample shows how to get Session object state. Notice the requirement to cast the retrieved data from Object into the required data type.
string userName = Session["username"].ToString(); DateTime lastVisit = (DateTime)Session["lastvisit"];
The following section describes how to use cookies as an alternative to the Session object for storing state information.
Storing State in Cookies
A cookie is a small amount of application data stored on the client—either on disk or in memory. The client passes the cookie as part of each request to the application, meaning that the application has access to the data held in the cookie. The application can use the cookie data to make runtime decisions, and it can modify or add to the cookie data before sending the cookie back to the client as part of the application's response.
By default, ASP.NET uses cookies to hold a client's session identifier; this allows ASP.NET to retrieve the correct Session object (discussed earlier). You can also use cookies to store your own state information.
Use cookies when:
- You have to store small amounts of state information.
- The state does not include secret or sensitive information.
- The state does not provide access to or drive secured parts of your application.
- Your application runs on a server farm and you have no means of providing a centralized state store.
- The state must survive across page requests or even across application invocations.
- Your application will still function if the state is not available.
- You have a relationship with the users and can be confident that they will enable cookies for your application.
Before deciding to use cookies, consider the following points:
- Cookies can survive across page requests, sessions, application invocations, and even computer reboots.
- Users can configure their browser to disallow cookies; in this case, your application must provide an alternate mechanism for storing the state information.
- The user's browser determines how much information a cookie can contain. Individual cookies are limited to a maximum size of 4 KB, and a specific domain may set a maximum of 20 cookies on a user's computer.
- Information stored in cookies is not durable; the cookie may expire based on information provided by the application or the user. The user can also delete the cookie.
- Because cookies are stored on the client, the information they contain is subject to modification.
- Cookies increase network traffic because the cookie is sent as part of each request and response.
- There is no state maintained on the server between client requests; this is particularly useful in a server farm because you do not have to maintain state centrally.
- Cookies allow you to set expiration times on the state information, after which the client browser discards the cookie.
Using Cookies
Cookies contain simple name/value string pairs. The easiest way to access cookie state is through the Request.Cookies and Response.Cookies properties of the current System.Web.UI.Page object. Both properties return a System.Web.HttpCookieCollection object containing the set of System.Web.HttpCookie objects that were received from, or will be sent to, the client.
The following code sample shows how to set state information in a cookie.
Response.Cookies["userinfo"]["username"] = "myUserName"; Response.Cookies["userinfo"]["lastvisit"] = DateTime.Now.ToString();
The following code sample shows how to get state information from a cookie. Notice the requirement to cast the retrieved data from String into the required data type.
string userName = Request.Cookies["userinfo"]["username"]; DateTime lastVisit = DateTime.Parse(Request.Cookies["userinfo"]["lastvisit"]);
Cookies can be a useful way to store state on the client. However, if you cannot guarantee that cookies will be enabled on every client, consider an alternative approach such as hidden form fields or query strings.
Storing State in Hidden Form Fields
Many Web applications store session state information in hidden form fields on the form that the user is currently working on. A hidden form field is not rendered visibly in the browser, but you can set its value property to hold a single piece of page-specific information. When the user re-submits the form to the server, the value of the hidden form field is sent in the HTTP Form collection along with the values of other controls on the form.
Use hidden form fields when:
- You have to store small amounts of state information.
- The state does not include secret or sensitive information.
- The state does not provide access to or drive secured parts of your application.
- Your application runs on a server farm and you have no means of providing a centralized state store.
- Cookies are disabled.
- The state does not have to survive across page requests.
- Your application will still function if the state is not available.
Before deciding to use hidden form fields, consider the following points:
- You can encrypt the information stored in hidden form fields to make it harder to attack. However, it is a good idea to use a back-end database to store any sensitive information.
- You can store only a limited amount of information in a hidden form field; the maximum size is limited by the control you choose for the hidden field.
- Information stored in hidden form fields is transmitted to the user and increases the size of the download. This can negatively impact performance.
- Pages must be submitted by way of an HTTP POST. If pages are submitted as an HTTP GET, your Web application will not be able to retrieve the information in the hidden form fields.
- It is a good idea to never trust data that comes from the user, especially if that data is of a sensitive nature. Some early shopping cart applications stored item price information for their carts in hidden form fields. This information was stored in plain text, and attackers soon realized they could modify the price in the hidden form fields to obtain a discount. Sensitive information should never be stored in hidden form fields, especially in plain text.
The following section describes how to use hidden form fields in an ASP.NET Web page.
To use hidden form fields
- Add a hidden field to a form on your ASP.NET Web page.
One of the ways to do this is to use the HtmlInputHidden control; this control is located on the HTML tab on the Toolbox. When you add this control to your form, an <INPUT> tag is generated as shown in the following example.
Note Another way to add a hidden form field is to use a standard Web Forms control such as a text box, and set its Visible attribute to false. If you adopt this approach, you do not have to perform Steps 2 and 3 in this procedure.
- Add a runat="server" attribute to the <INPUT> tag, to enable you to access the hidden control in server-side postbacks. Also add an id attribute, to assign a programmatic identifier for the hidden control.
- In the code-behind file for your ASP.NET Web page, declare an HtmlInputHidden instance variable to correspond to the hidden control. The name of the instance variable must be exactly the same as the id attribute of the hidden control.
- At an appropriate juncture in your ASP.NET Web page, assign a value to the hidden control to store some information in the control.
The hidden control, and its value, will be returned as part of the response to the client's browser.
MyHiddenControl.Value = "myUserName";
- On a subsequent postback, retrieve the value of the hidden control and use the information as required.
string userName = MyHiddenControl.Value;
Hidden form fields provide a simple mechanism for storing state. A closely related mechanism is to use query strings.
Storing State in Query Strings (URL fields)
The HTTP specification allows for client browsers to pass data as part of the request's query string. This feature is typically used in HTTP GET requests to pass arguments to an application, but you can also use it to pass state information back and forth between the client and server. For example, in the URL http://www.asp.net/somepage.aspx?userid=12&location=Boston, the query string contains two attribute-value pairs: one named userid and the other named location.
Use query strings when:
- You have to store small amounts of state information.
- The state does not include secret or sensitive information.
- The state does not provide access to or drive secured parts of your application.
- Your application runs on a server farm and you have no means of providing a centralized state store.
- Cookies are disabled.
- The state must survive across page requests or even across application invocations.
- Your application will still function if the state is not available.
Before deciding to use the query strings to manage state, consider the following points:
- Some browsers or proxies have URL length restrictions. The current IETF RFC about URL length limits them to 4096 characters.
- If cookies are disabled, ASP.NET embeds the session ID in the URL of the page, which means the number of characters available for query string state is reduced.
- Users can easily change the contents of the query string. Make sure that no pages assume authorization, and write code to redirect users to a logon page if they have not already logged on.
- If the query string values contain characters such as spaces and punctuation, encode the query string values by using HttpUtility.UrlEncode.
- Use HttpUtility.UrlDecode when reading information from the query string to decode any encoded query string values and to protect against invalid characters in the query string.
- To make sure people do not modify a query string, it is a good idea to create a keyed hash code for the data.
- If you want to store sensitive state in the query string, you must use encryption. However, this raises the problem of key management, so it is a good idea to avoid the query string in favor of a more secure state mechanism.
The following procedure describes how to use query strings in an ASP.NET Web page.
To use query strings
- Write code in your ASP.NET Web page to programmatically assign a URL to a hyperlink control, form control, image control, or a similar control.
The URL can contain a query string that relays information to the server-side postback when the user navigates the URL link. For example, the following statement sets the NavigateUrl property on a hyperlink control; the URL contains the user's ID in the query string.
HyperLinkSubmitOrder.NavigateUrl = "orderVerify.aspx?userid=" + HttpUtility.UrlEncode("123 456 <789>");
- On a subsequent postback, retrieve the required information from the query string as shown in the following example.
string userID = HttpUtility.UrlDecode(Request.QueryString["userid"].ToString());
Query strings and hidden form fields are generic techniques that are used in many Web technologies. The following section describes an ASP.NET-specific mechanism, whereby state is stored in the ViewState property of an ASP.NET Web page.
Storing State in ViewState
Each ASP.NET page has a ViewState property that is used by the .NET Framework to persist control state between page requests. Every time the application responds to a client request, ASP.NET serializes the content of the page's view state and includes it in the HTML response as a hidden field. When the client submits the next request to the application, the request includes the serialized view state. ASP.NET parses the view state and uses it to set the initial state of the page and the contained controls. You can also use view state to store custom state information for your application
Use view state when:
- You have to keep track of page-specific information between postbacks.
- You have to store small amounts of state information.
- The state does not include secret or sensitive information.
Before deciding to use view state, consider the following points:
- State stored in the ViewState property is available only to the current page; view state is not persisted across pages.
- The values in view state are sent to the client, increasing the amount of network traffic.
- Storing large sets of information in the view state property can slow the rendering of the page and the parsing of requests, because ASP.NET has to manipulate the view state values.
- When rendered to HTML, the view state values are compressed, encoded and hashed. This improves efficiency by reducing the amount of data sent, and it helps make sure people cannot submit modified view state. However, because the view state is not encrypted, merely encoded, people can easily decompress and decode the view state to obtain the contained data.
- When using ASP.NET mobile controls to deliver applications to mobile devices, view state is not sent to the client device, but instead it is stored in the Session object automatically by the ASP.NET runtime.
The following procedure describes how to use view state in an ASP.NET Web page.
To use ViewState
- Write code in your ASP.NET Web page, to assign a value to a ViewState property for your Web page.
If a ViewState setting with the specified name does not already exist, it is created automatically. The following example creates a ViewState property named "username," and sets its value to "myUserName."
ViewState["username"] = "myUserName";
- On a subsequent postback, retrieve the required information from the view state and cast it to the appropriate type.
string userName = ViewState["username"].ToString();
Using view state in this way makes it easy to persist small amounts of state between page postbacks on pages where controls have server-side event handlers.
Storing State in the Application Object
The System.Web.UI.Page class, that all ASP.NET pages inherit from, provides an Application property through which you can share state between all users and all sessions of an application.
Use the Application object when:
- You have to manage application-wide state that is not specific to any particular user or session.
- The state does not have to survive the life of the process the application is running in.
- The state is sensitive and cannot be passed across the network.
- You have substantial amounts of read-only state that you can load into the Application object at the start of application execution. An alternative solution might be to cache the data; for more information, see "Caching State" later in this chapter.
Before deciding to use the Application object, consider the following points:
- The Application object is a dictionary-based, in-memory storage mechanism, meaning that it is fast, but storing large amounts of data affects the performance of your server.
- Because the state is stored on the server, the Application object offers higher levels of security than the client-based state mechanisms such as cookies, hidden form fields, and query strings; however, because all application code can access the Application object, it does not provide as secure a solution as the Session object.
- You must synchronize access to Application state data, because other threads may be accessing the state at the same time. This means the Application object is best for read-only state.
- Unlike the Session object, you cannot specify a timeout value after which the Application object state expires. Data in the Application object is retained until you remove it or until the application terminates.
The following section describes how to store state in the Application object.
Using the Application Object
The System.Web.UI.Page class has an Application property that returns a System.Web.HttpApplicationState object; through this object, you can manipulate the contents of the Application object. State items are held as Object references in HttpApplicationState.
The HttpApplicationState class provides properties and methods to manipulate the collection's contents, enabling you to add and remove collection elements, get and set specific data elements, enumerate the collection, and clear the collection.
The following code sample shows how to access Application object state, by using the C# indexer of the HttpApplicationState class.
Application.Lock(); if (Application["hitCount"] == null) { Application["hitCount"] = 1; } else { Application["hitCount"] = 1 + (int)Application["hitCount"]; } Application.UnLock();
Note the use of the Lock and UnLock methods to serialize access to the Application object state. Note also that the data is cast to the appropriate data type (in this case an integer) when retrieved.
Serializing State
When you store state out-of-process, such as in a state server or in SQL Server, the data must be serialized. Depending on the type of data that you store, this might lead to a major performance hit.
If you store basic types such as integers, strings, and GUIDs, the .NET Framework uses optimized methods to serialize the data. However, if you want to store non-trivial types such as a Hashtable, the framework uses the BinaryFormatter by default to perform serialization. This method of serialization is slower than that used for basic types.
To enable custom types to be serialized
- Annotate your custom type with the [Serializable] attribute.
For example, the following code defines a serializable class named CustomerDetails.
[Serializable] public class CustomerDetails { // Plus other members ... }
- Declare fields, properties, and methods in the class as usual.
Note that BinaryFormatter serializes all the fields of a class—even fields marked as private. In this respect, binary serialization differs from the XmlSerializer class; the XmlSerializer class serializes only public fields.
- If you want selective fields to be excluded from binary serialization, annotate the fields with the [NonSerialized] attribute.
The following example defines three fields; the mName and mAddress fields will be serialized, but the mLastUpdate field will not be serialized.
[Serializable] public class CustomerDetails { private string mName; private string mAddress; [NonSerialized] private DateTime mLastUpdate; // Plus other members ... }
If your custom type is particularly large, or if it contains information that can be summarized into a more concise format, consider defining a custom serialization format for your type.
To define a custom serialization format
- Implement the ISerializable interface in your custom type.
- Provide a GetObject method to define how you want the object's information to be serialized.
- Provide a deserialization constructor to enable a copy of the object to be reconstituted during deserialization.
For more information about how to perform custom serialization, see "Custom Serialization" on MSDN (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconcustomserialization.asp).
Caching State
Caching is a technique used to improve the performance and scalability of applications. Caching is most useful in server-based applications, in particular Web applications, but it also applies to many smart client situations. The purpose of caching is to keep state that is expensive to create or retrieve in a more easily accessible form or location. For example, when a user has an active session on your Web application, if you keep a copy of their profile in memory instead of always reading from a remote SQL Server, your application performance improves.
You must consider your caching requirements when you design the state management aspects of your application. Caching can be difficult to implement in an existing application, and the capabilities of the caching mechanism must be appropriate to the lifetime, scope, and type of state you have to manage.
A complete discussion of caching is beyond the scope of this guide. For comprehensive coverage, see the "Caching Architecture Guide for .NET Framework Applications" on MSDN (http://msdn.microsoft.com/en-us/architecture/default.aspx).
State management is a crucial consideration in Web applications. You must choose the appropriate storage locations and mechanisms to manage state in your presentation layer to attain the optimal levels of security, scalability, manageability, and extensibility.
|Retired Content
This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.


text:
Graduate school
Students who plan on applying to a graduate program in archaeology or a related field need to follow a series of steps early in their undergraduate career, and they should be making detailed plans by the beginning of their junior year. Some of the crucial components for graduate careers are discussed below. During your junior year you should take the 1-Credit Graduate Preparation Seminar, ARC 395 in which much of the information presented below will be discussed in detail.
Your Grade Point Average (GPA): Students with graduate program aspirations should have a final GPA of 3.5 or higher. Some graduate programs may accept a slightly lower GPA if other aspects of your application are outstanding. It is worth the effort to strive for the highest GPA given the competition for graduate school admittance and the sharp limits on available funding for graduate students. Top-quality graduate programs may receive 50 or more applications for 4 or 5 slots.
Appropriate Course Work: As listed in Career Directions, students who intend to pursue a particular direction should focus on the best possible sequence of courses prior to applying to graduate school. For example, anyone who hopes to be accepted into a Forensic Anthropology program must have a specialized biology background. The list of appropriate courses is very different for those interested in a Cultural Resources Management career. An academic advisor with knowledge of your area of interest can be of great assistance to you.
Complete your Archaeology Field School as soon as possible. The Field School is a requirement for the major, and it will also help you find out whether field work is to your liking.
Students should attend several professional archaeology conferences at the regional and/or national level while an undergraduate. Many UW-La Crosse students attend regional and national meetings each year. This will allow you to see what is going on in the profession, inquire about graduate programs and faculty, and network. Professional meetings offer an excellent opportunity to meet distinguished professionals. You might wish to seek out specific people to ask about their graduate programs and research. There is limited funding available for students to attend meetings through the College of Liberal Studies and the Archaeology Club.
Some undergraduates present papers or posters at professional meetings. Such presentations provide excellent exposure and are an important addition to your vita.
Join the Archaeology Club, and Archaeological Studies/UW-L student organization. The club sponsors field trips to archaeological sites, museums, and universities and attends meetings as a group. Please don't be shy! Interacting with other students who have similar interests will help prepare you for the important relationships you will develop in graduate school and your career. Get involved, be a professional (see Archaeology Club).
Work on research projects is an essential part of your training. After completing Field Methods (ARC 402), you may be able to do volunteer work in the Archaeology Lab. From this point you can begin to undertake basic laboratory research and additional field work. You need to be involved in field and laboratory research as early as possible in your career. Many students find that their lab or field work forms the basis for their Senior Project/Thesis. Students who wait until the beginning of the ARC 499 course to select a topic typically experience problems and are left behind by their peers.
Learn a foreign language relevant to your research interest. Most graduate schools require all students to pass oral and written language competency exams. By becoming competent now, you will be able to focus your efforts in grad school on your research, and you will also be prepared for field work in a foreign country where you speak the language.
Preparing your vita is an essential element for graduate school or job applications. A vita is a summary of your professional (academic) career. It should be a summary of what you have done in a professional sense. While it is nice that you have volunteered at the local hospital for the past three years, these non-archaeology efforts should be a minor part of your vita. On your vita you can, however, list your GPA, field experience, professional meeting attendance, laboratory experience, research projects, public outreach activities, and professional references.
The Graduate Record Exam (GRE) should be taken during the junior year by all students who plan to apply to a graduate program. This exam measures verbal, quantitative, and analytical skills that have been acquired over a long period of time and are not related to a specific field of study. A GRE Information and Registration Bulletin that provides test dates and fees is available at the UW-L Counseling and Testing (C&T) Center in 112 Wilder Hall. The C&T Center offers practice tests that will help you become familiar with the test and assesses your potential GRE score. GRE information is available online at www.gre.org. There are also short crucial courses and booklets available that may help you prepare for the GRE. Your score may be crucial in the admittance process at most quality graduate programs.
Letters of reference are needed to apply for a job or a graduate program. In general, you will need 2 to 4 professionals to write you a favorable letter of reference. If you are a student who has been in the program for 3 years, and have taken only the minimum class work, with no attendance at professional meetings, no lab or field work beyond field school, and no serious research, how will you get quality letters? Students who show up at a faculty office in their junior year, asking for a letter cold, cannot expect a positive response. If your only basis for a recommendation is the grade you received in a particular class, what do you think your chances of a good recommendation will be? That is why you need to be a "player" from the start, attending professional meetings, networking, becoming involved in all the professional activities you possibly can. Think about it!
For professionals who agree to write you a positive letter of reference, you will need to provide them with the following:
1) A copy of your vita
2) A transcript of the courses you have taken
3) A copy of the best paper you wrote while an undergraduate student
4) A list of the graduate programs to which you are applying, with
a) the exact and complete address
b) the name of the person or committee to whom the letter is directed
c) the date by which each must be postmarked
Typing or word processing your graduate application forms is highly recommended - neatness counts! Many applications are available online.
Selecting the right graduate program for you is an extremely important and difficult procedure. Work closely with a trusted UW-L academic advisor. Most students apply to 3 or 4 graduate programs. A helpful first step is to select a faculty person at a graduate program institution who is doing research in an area or field related to your interest. Then you can investigate this person's graduate program. Is it just a master's program (M.A. or M.S.), or does it also offer a doctorate (Ph.D)? Try making an appointment to "interview" the faculty person you are interested in working under as a grad student. Do you have positive "chemistry" with this person? If they don't have time for you now, they certainly won't when you arrive at graduate school!
If you plan to meet with a faculty person at a graduate school of interest, you should do a number of things to prepare:
1) Make an appointment weeks in advance, and be sure to reconfirm the appointment a day or two before the scheduled meeting day.
2) Be on time and dress like a professional.
3) Research the faculty person's academic background on that university or institution's web page or in the Guide to Departments of Anthropology kept in the Sociology/Archaeology department office at 435 Carl Wimberly Hall.
4) Try to find and read the person's recent publications so you are knowledgeable about their research and interest. Is this what you are interested in? Most graduate faculty expect their students to be doing research for their master's and/or doctorate in topical and geographic areas that parallel their own interests. In many cases they will insist on it.
During this discussion, you might wish to ask about graduation rates, number of students in residence in the graduate program, laboratory facilities, and the possibilities of receiving financial aid through grants, teaching or research assistantships, or a CRM program. Money is very limited at all public universities. Financial aid generally goes to the best qualified incoming students, those with the highest GRE scores, and the highest GPA.
Links of Interest

subset: commoncrawl


text:
On 7/11/11 12:09 PM, Josh Berkus wrote: > Dave, Guillaume, > > I've tested 1.14b2 on OSX 10.5 and reconnecting now works perfectly. It > even worked after I put the laptop to sleep and changed networks and > then reconnected the VPN. Booo. I spoke too soon. While reconnecting the query window works perfectly, reconnecting the object navigator does not. I just get "refreshing server ______ ... failed". -- Josh Berkus PostgreSQL Experts Inc. http://pgexperts.com
Next: From: murillobeltrame Date: 2011-07-11 22:33:33 Subject: PRECISO DE AJUDA NA RESTAURAÇÃO DO BANCO COM PASTAS Previous: From: Josh Berkus Date: 2011-07-11 19:09:08 Subject: Re: pgadmin and broken connections


text:
To practice leadership in your life, seize opportunities to make and learn from decisions, whenever and wherever they arise, says Harvard Business Review.
Leadership is not an innate trait that you're born with. It can be learned. The key is to practice before you have the official title.
Start by focusing on the choices you make now, such as who to put on your team or what vendor to use for your project. Recognize that you likely don't know everything. Making decisions based on incomplete information is a skill that every leader must master.
Once you've acted, ask yourself: Was that the right decision? Could you have done something differently? This will get you comfortable with making decisions, acting upon them, and reflecting on their outcomes. Then, learn from your inevitable mistakes.
You will build knowledge and skills as you work up to the larger decisions with broader consequences that all leaders have to make.
Today's management tip was adapted from Wilderness Leadership – on the Job by John Kanengieter and Aparna Rajagopal-Durbin.


text:
PRZOOM - /newswire/ -
Bromley, Kent, United Kingdom, 2012/01/04 - Reliable Manufacturing announces its next Operations Excellence Master Class; exploring the strategies and techniques that drive reliability and sustainable business improvement - Reliable-Manufacturing.com.
Reliable Manufacturing is holding its next Operations Excellence Master Class on 8 February 2012, at Gisborough Hall, North East England. The one-day event is designed to equip leaders in manufacturing and distribution industries with the operations excellence and reliability principles to improve business performance.
The Master Class, jointly led by Andrew Fraser, Managing Director of Reliable Manufacturing, and principal consultant Ron Moore, will explore the strategies and practices that underpin some of the worlds best manufacturing and distribution companies. Through inspiring case studies, attendees will see how the worlds best operations achieve maximum production capacity, and will have the opportunity to benchmark their own plants capabilities against best-in-class.
The Master Class provides delegates with straightforward and practical advice on how to implement changes in operations and maintenance, in order to maximise process uptime, eliminate unplanned downtime, improve quality and minimise costs explains Fraser, who has over 30 years experience in Maintenance, Operations and Change Management roles and specialises in helping clients change from reactive to proactive operating cultures.
Principal Consultant Ron Moore is an internationally recognised authority on Reliability and Operations Excellence. He is author of books,"Making Common Sense Common Practice" and What Tool? When? - A management guide for selecting the right Manufacturing Improvement Tools.
As businesses are met with the conflicting challenge of reducing costs and simultaneously driving business efficiency, the Master Class will show how market leaders achieve low cost performance not through cost cutting, but through relentless pursuit of defect elimination, asset productivity and workforce engagement.
The biggest challenge businesses face when implementing Operations Excellence, is bringing with it the required cultural change, acknowledges Fraser. But, like most big changes, the key is to break it down into a series of small tasks. The Master Class offers practical advice on how to align leadership to a common strategy and engage the whole organisation by driving change through small improvements.
The fee for a delegate to attend the event is £695 +VAT. For more details and to book online visit reliable-manufacturing.com or contact Andrew Fraser on +44(0)79 6764 4852.
Agency / Source: RONIN Marketing UK Ltd
Availability: All Regions (Including Int'l)
Traffic Booster: [/] Quick PRZOOM - Press & Newswire Visibility Checker
Distribution / Indexing: [+]


text:
We love a good toaster grill, and this one from Jata is pretty killer looking. It features 4 quartz elements which are positioned evenly under a large toasting surface to deliver perfect toasted breads and rolls. There's even a crumb tray, along with just an off/on switch to get things started. Price is around € 25 at Jata, and we think we want one now.
Via Appliancist
Read More in: Toasters
Share this Article with others:
Related Articles:
Came straight to this page? Visit Kitchen Contraptions for all the latest news.


text:
Member since 4/4/2014
- 1 total post
- 1 question
Questions from sqrlaubrey
Should I get a brow lift or should I just wait until I get older? (Photo)
I am 20, and my one eyelid and eyebrow hang lower than the other. It makes me very self conscious sometimes because when I smile one eye almost closes and the other doesn't. I... READ MORE


text:
LORAIN — Police arrested a Lorain man who they say shot another man early Wednesday on Westview Court.
Marcus Baker, 32, 1000 block of West 17th Street, was arrested Wednesday after a brief chase. He was charged with felony assault, obstructing official business, resisting arrest and concealed carry of a weapon.
Police said Baker shot Marvin Taylor, 29, who was staying at his girlfriend's house in the 2300 block of Westview Court.
Officers were patroling the area at 12:13 a.m. when they heard the gunshots. Taylor's girlfriend, Christine Robertson, ran out of her home yelling to officers that her boyfriend had been shot. Police said Taylor was lying between the living room and the kitchen, breathing shallowly, with gunshots in his back and leg.
Robertson said Taylor was visiting her and had been playing X-box when she went to sleep on the couch. She said she awoke to the sound of gunshots and Taylor running into the house saying he had been shot.
Taylor told Robertson that he heard a knock on the door, and when he answered, he had been shot by an unknown man, according to a police report.
Police spoke with a witness who said she heard three shots fired close to her home and saw Taylor running into Robertson's home and a man dressed in all black running to a silver or gray vehicle that was followed by a police cruiser.
Police caught up with the suspect's vehicle in the 2300 block of Leavitt Road. Police said Baker was driving, and he ran from the car when it was pulled over. An officer chased Baker to the backyard of 2200 block of West 23rd Street while another officer waited with passengers in the vehicle, Anthony Coats and Sholanda Harvey.
Lt. Mark Carpentiere said Coats and Harvey were interviewed and then released. He said Baker was determined to be the shooter and was arrested.
Police found an unloaded revolver behind 2300 Leavitt Road. A video shows Baker, possibly throwing shell casings, as he runs, according to the report.
Carpentiere said police are investigating to determine if the suspect and the victim knew each other. He said he did not know the motive behind the shooting.
Contact Chelsea Miller at 329-7123 or firstname.lastname@example.com.


text:
Feature Article of Wednesday, 24 October 2012
Columnist: Quainoo, Kojo
22nd October, 2012
The Cape Coast South Constituency Campaign Communications Team of the NPP is pleased to announce to the general public its Campaign Launch on 23rd October, 2012 scheduled to take place at Chapel Square in Cape Coast.
We entreat all and sundry to come and share the vision and ideals of the NPP to redefined and reshapen the destiny and future of this constituency through free quality SHS education, better health care, proper security and prudent management of the economy.
It is now obvious that the wind of change is everywhere in this country. We need to throng the rally grounds in our numbers in order to send a strong and clear signal to the NDC that Ghanaians, especially Cape Coast South Constituents are fed up with their lies and deceit. The disappointments must stop! We need a proper change, a change that will shapen the future of our children through quality education.
Consequently, intelligence reaching us indicates that some people have been sponsored to come and mar the occasion, so we are calling on the police to heighten security for us, and also the general public is advised to report any suspected saboteur to the police.
We are not intimidated by the intended sinister acts of others. We have God and the majority of Cape Coast South Constituents on our side. So we shall succeed!
This election is also about restoring the damaged and stained image of Cape Coast South Constituency's representation in parliament.
The Campaign Launch will be graced by the next President Nana Addo Dankwa Akufo-Addo, ex President His excellency John Agyekum Kufour and other party stalwarts.
So all must be there!
God Bless You
Kojo Quainoo (Member of the Communications Team) 0244852464


text:
An unidentified suspect robbed a 21-year-old Madison woman Sunday night on West Gilman Street, according to a Madison Police Department statement.
The suspect approached the woman from behind and grabbed her backpack as she walked down the 400 Block of West Gorham Street, the statement said. The suspect made off with several items of clothing and the victim's wallet, all contained inside the backpack, the statement said.
Although the crime occurred Sunday, the victim did not report the crime until Monday morning, MPD spokesperson Joel DeSpain said. Typically when a robbery occurs, the victim reports it right away, he said.
DeSpain said delays in reporting usually occur if the victim experienced emotional trauma or the suspect is someone the victim knows.
He noted the robbery was unusual because it occurred on a well-travelled road and did not happen too late at night. Robberies are not common in the West Gilman Street area, he added.
Earlier this week, a man grabbed a woman without stealing anything on the 400 block of West Gorham Street.
To prevent future robberies, DeSpain explained people should be cautious when walking home at night. MPD recommends students or anyone else in the community not walk alone late at night, particularly if they are intoxicated, DeSpain added.
But, he said, in this case there was likely not much the victim could have done.
"In this case I'm not sure much could have been done to prevent [the crime]," DeSpain said. "The suspect came up behind her."
If presented with a similar situation, DeSpain said he encouraged people not to take the chance of being injured.
The victim was unable to obtain a detailed description of the robber, and according to the statement, MPD has not located the suspect at this time.


text:
THE Liberal Democrats are fighting these European elections to keep Britain in Europe.
Because hundreds of thousands of jobs depend on trade with the EU. Because we need to work together to fight cross-border crime and protect our environment.
Being in the EU is about protecting the 360,000 jobs across the South West – the 4 million jobs across the UK – that depend on Europe and working to create millions more by making it easy for British companies to grow and export.
Manufacturing giant General Electric, which employs more than 1,600 people at Bishops Cleeve, recently said Britain should stay in the EU.
And there are many other Stroud and Gloucestershire employers that export to the EU and could really suffer if we left.
Messier-Bugatti-Dowty in Gloucester who make aircraft landing gear supply parts to Airbus. EDF who employ 5,000 people in Barnwood are a French-owned company. Spirax-Sarco Engineering in Charlton Kings has Italian subsidiaries.
Gloucestershire's GFirst Local Enterprise Partnership's new Growth Hub will be doing lots of great work to help local businesses grow and export overseas.
Being in the EU is also about protecting our traditional agricultural produce. Single Gloucester cheese, Gloucestershire cider and perry and traditionally farmed Gloucestershire old spot pork have all got special EU protected status to guarantee quality and make sure that only products made here can be sold under those names.
But it's not just about businesses and trade. Being in the EU is also about making sure the law does not stop at national borders. Our police forces need access to key EU crime-fighting tools to combat criminal gangs, terrorists and international paedophile rings
The Conservatives once boasted of being 'the party of law and order': now they allow their anti-EU obsession to get in the way of fighting crime.
And finally, being in the EU is about working together with other countries to cut our carbon emissions and reduce pollution levels. It's about making the switch to green energy together and more cheaply, rather than trying to go it alone at massive expense. If we want influence in the world we need to be influential in Brussels in a union of more than 500 million people.
But the bottom line is that the Liberal Democrats want the UK to stay in the EU to protect jobs, including jobs right here in Gloucestershire.
We are the 'in'party because in the end, being in Europe means being in work.
Liberal Democrat candidates
- Graham Watson
- Kay Barnard
- Brian Mathew
- Andrew Wigley
- Jay Risbridger
- Lyana Armstrong-Emery


text: Cora, our beauty is endowed with a lot of grace and inner and outer beauty by the Almighty. She has tiny pink nipples and round breasts and her rear portion is simply the best. Her vagina is inviting you to lick it and her high heels make her look extremely sexy.


text:
PRS SE Standard 22 ST22TS - Tobacco Sunburst W/Hard-Shell Case
6-String Electric Guitar - Tobacco Sunburst With Case
Product Description for the PRS SE Standard 22 ST22TS - Tobacco Sunburst W/Hard-Shell Case
Product Description For PRS SE Standard 22 ST22TS- Tobacco Sunburst + Gator GC-ELECTRIC-A Deluxe ABS Electric Guitar Case
Package Includes
1 x PRS SE Standard 22 ST22TS- Tobacco Sunburst
1 x Gator GC-ELECTRIC-A Deluxe ABS Electric Guitar Case
PRS SE Standard 22 ST22TS- Tobacco Sunburst
The SE Standard 22 is a workhorse guitar that is ideal for the studio and the stage. With an all-mahogany body and 22-fret set mahogany neck, this guitar has a warm, woody tone and focused midrange, allowing the SE Standard 22 to easily fit in a mix. This guitar is complete with classic PRS appointment, including an all-mahogany body (reminiscent of Paul's pre-factory guitars), a set mahogany Wide Fat neck, rosewood fretboard and bird inlays, and humbucking pickups with a PRS-Designed stoptail.
Since 2001, the SE Series has been offering incredible quality and great tone at affordable prices. The introduction of the SE Standard models represents a significant extension of the SE Series into the < $500 price point. The goal of the SE Series has always been to provide a quality instrument to players of all levels – one that would not fight the player, but encourage him or her to start and to keep playing. PRS is proud to extend this promise to an even more attainable price point with the SE Standard lineup.
Gator GC-ELECTRIC-A Deluxe ABS Electric Guitar Case
The Gator GC-ELEC deluxe electric guitar case fits most Strat or Tele-style guitars. Constructed from a industrial grade ABS exterior it can support a lot of punishment thanks to its heavy-duty aluminum valance. A through-bolted handle (a Gator exclusive) ensures you don't have to worry about knocking your handle off. The Deep plush EPS interior found on the Gator GC-ELEC keeps your electric guitar in place while transporting.
PRS SE Standard 22 ST22TS- Tobacco Sunburst
- Body Wood : Mahogany
- Number of Frets : 22
- Scale Length : 25"
- Neck Wood : Mahogany
- Fretboard Wood : Rosewood
- Fretboard Inlays : Birds
- Neck Shape : Wide Fat
- Bridge : PRS-Designed Stoptail
- Tuners : PRS Designed Tuners
- Hardware Type : Nickel
- Treble Pickup : PRS-Designed Standard Treble Humbucker
- Bass Pickup : PRS-Designed Standard Bass Humbucker
- Controls : Volume and Tone Controls with 3-Way Toggle Pickup Switch
Gator GC-ELECTRIC-A Deluxe ABS Electric Guitar Case
- Deluxe ABS Exterior
- Heavy-duty aluminum valance
- Through-bolted handle for extra strength
- EPS foam protective interior with deep plush lining
- Accessory compartment
- Chrome plated lockable latches
|Dimensions (WxHxD)


text:
Nexos Board Game
You Shall Not Pass Each player has a set of 24 pieces of a color all different composed of 1 to 4 segments. When their turn comes to play players place one of their pieces on the board. The first piece should touch one of the four starting intersections and all subsequent pieces must share at least one intersection with at least one of the previous placed pieces of the same color. The game is over when no one can play any longer. Players then count the numbers of segments present on the pieces that they have not been able to place on the board. A bonus of -10 points is granted to a player who has succeeded in placing all his pieces. The player with the lowest total wins. Running time 30 mins Age 7 2-4 playersCheck stock and price
Nexos Board Game
Most popular Toys in Nexos
'Nexos Board Game' is from the Toys category
Most popular Toys
Nexos Board Game on other UK sites
Nexos Board Game on other UK sites
Nexos Board Game on USA sites
Nexos Board Game on USA sites


text: Mrs Linda Briscoe Medical and Dental SciencesStrategic Projects Officer Contact details Telephone+44 (0)121 414 email@example.com AddressResearch & Knowledge Transfer OfficeCollege of Medical & Dental SciencesUniversity of Birmingham Edgbaston Birmingham B15 2TT UK Linda provides project support for key research programmes within the College of Medical and Dental Sciences. In particular she provides full administrative support to the TRP Business Lead and TRP Clinical Lead for NIHR Translational Research Partnership (TRP) for Joint and Related Inflammatory Diseases at Birmingham. The partnership at Birmingham is formed of the University, University Hospital Birmingham Foundation Trust (UHBFT), Dudley Group of Hospitals NHS Foundation Trust and Sandwell and West Birmingham Hospitals NHS Trust. Project support is also provided to the EU MERLIN project led by Professor Philip Newsome and Linda also assists Dr Jane Steele with cost recovery for samples and services supplied by the Human Biomaterials Research Centre. Qualifications Member – Chartered Institute of Management Executive Diploma in Management 2003 CertHE in Professional Marketing & Public Relations 2008 ILM Award in First Line Management 2009 HNC in Business & Personnel 2000


text:
Friendly Fire
After 12 years in the business peppered with who knows how many number one singles, reggae icon Buju Banton is still frustrated. Fondly known as "the Gargamel," a name given to him by his Jamaican brethren, he does not believe he has achieved the re- cognition he deserves. "The way the system is set up, it's not set up for me, Buju Banton, to be here," he says. "I was never given the opportunity to reach my full potential. I never got the accolades or the credits that were due to me."
In his gruff voice, Banton insists he's not completely bitter about his market share today. But he's acutely aware that other DJs and singers have received less slapping around from the press and public over the years. Banton is referring directly to his fellow reggae artists -- Beenie Man and his album Art and Life, and Shabba Ranks with X-tra Naked and As Raw as Ever -- two Grammy winners who've released songs with similarly coarse material.
Banton, however, ended up singled out for his controversial lyrics to an early '90s song, "Boom Bye Bye," which led to an outcry in the gay community. The repercussions over the song, which advocated violence against homosexuals (or "batty boys," as they're known in Jamaica), meant a virtual crib-death for the young artist in the desirable crossover market. "Through my travels I've seen certain things that I don't believe in and don't agree with, due to my religious beliefs," is how Banton sums up the storm. "After reading the Bible, understanding these things, and bringing them across in my music, many people have fought against me in an attempt to bring me down. Others who sang about the same things have won Grammys," he counters, "but I've never even won a lollipop!"
Ten years later, Banton (born Mark Anthony Myrie) has moved on, candy be damned. Within the dancehall community, Banton remains revered as one of the strongest figures worldwide. Despite -- or perhaps because of -- the challenges illustrated above, he appears to have grown spiritually, artistically, and personally. For evidence, look no further than Banton's latest album, Friends for Life, issued via Miramar-based reggae powerhouse VP Records (enjoying a sweet new distribution agreement with WEA/Atlantic Records).
Upcoming Events
Andy Mineo
TicketsSat., Oct. 28, 5:00pm
Maze featuring Frankie Beverly
TicketsSat., Oct. 28, 7:00pm
TicketsSat., Oct. 28, 7:30pm
TicketsSat., Oct. 28, 8:00pm
The Marcus King Band
TicketsSun., Oct. 29, 7:00pm
The 18-track collection is literally all over the reggae-music map, containing a mixture of hard-core dancehall anthems, flavorful old-school R&B, ska beats, sensitive ballads, and message-driven roots. "The album is quite diverse, and I couldn't compare it with any of my previous work," Banton says. "Every new work to me is a step above my previous one. We titled the album Friends for Life because of the great people I've gotten to know over the years in this business and the countless fans. My fans are my friends for life, and I love my friends."
Some of his friends included on the album are pinup Beres Hammond, rapper Fat Joe, dancehall diva Nadine Sutherland, 2003 reggae Grammy nominee Bounty Killer, and current reggae chart-topper and brethren from the early days, Wayne Wonder. The album also includes some dynamic behind-the-scenes work of his "other friends" in the industry, top musicians and producers from the island in the sun.
In the midst of our conversation, Banton's cell phone rings. Sporting a white Rocawear T-shirt, cream-colored slacks, and white headgear encasing medium-length dreadlocks, the lanky Banton takes a moment to politely tell the caller he's being interviewed and will return the call.
It may take time to do so, though -- tonight is the official media launch for Sting Miami, the self-proclaimed "Greatest One Night Reggae Show on Earth," and Banton is here to help endorse the March 23 downtown Miami event where he'll perform. Conveniently coinciding with the release of his new album, it's also his first public appearance in some time. Everyone's curious to know where Banton has been -- after all, his previous album, Unchained Spirit, was released three years ago.
"I normally take a year to put a record together, and after it's been released, I like to take a year to promote and tour with it," he continues. "I love to play football [soccer], and last year I dislocated my knee. I was out of commission for six months recovering, so I was unable to work on my music. This resulted in the album being delayed. Nevertheless, good things come to those who wait, and it's better to be late than never."
Now this intelligent, conscious Rastafarian has finally attained the distance and freedom needed to associate himself with positive statements. Whether he sings about the beauty of women, passionately delivers an ode to true friendship, or preaches about the need to practice safe sex, Banton's distinctively growly voice adds another unique edge to his delivery of the message.
"Music must be diverse," he explains. "When you put it in to play, it should take you elsewhere. It should take you to a higher height. I hate stagnation in life and in whatever I do, so my music is a perfect example of the opposite of that stagnation."
Get the Things to Do Newsletter
Find out about upcoming events and special offers happening in South Florida.
Recommended for You
Powered by SailThru
Upcoming Events
TicketsThu., Oct. 26, 7:30pm
The Magpie Salute
TicketsFri., Oct. 27, 7:30pm
Ana Gabriel
TicketsFri., Oct. 27, 8:00pm
"Tango Intimo 2" With Nestor Torres
TicketsWed., Oct. 11, 8:00pmpowered by goldstar
Sponsor Content


text:
When a Russian passenger jet crashed in Norway last fall, forensic scientists had the gruesome task of identifying victims from sometimes minuscule body parts. A Norwegian team was able to identify nearly all the victims by comparing their DNA with that of family members--the first time DNA typing has been used with such success after an airline disaster. Experts say the findings, reported in the April issue of Nature Genetics, mark the advent of a valuable new tool for identifying remains.
On 29 August 1996, a jet carrying Russian and Ukrainian miners and their families to remote Spitsbergen Island north of the Norwegian coast crashed into a mountain, killing all 141 people aboard. Norwegian crews shipped body parts collected at the site to the Institute of Forensic Medicine in Oslo, Norway. Dental records and fingerprints--the traditional tools for identifying crash victims--were unavailable, so the forensic scientists took a different tack: DNA fingerprinting.
Working around the clock, a team led by Bjornar Olaisen took only 3 weeks to sequence eight stretches of junk DNA from each of 257 body parts. They found 141 unique DNA types, indicating that they had remains of all the victims. Meanwhile, the lab sequenced the same stretches in blood samples from family members of 139 victims. This led to the positive identification of remains from these victims; the other two were identified using other means. In accidents that cause severe mangling, the researchers say, DNA analysis may be the only way to identify small remains.
"They did a fantastic job," says Jack Ballantyne of the Sulfolk County Crime Laboratory in Hauppauge, New York, who led the DNA analysis of victims of the TWA flight 800 crash last July. He says the Norwegian team had "a bit of luck behind them," in that conditions were good for DNA preservation: Temperatures at Spitsbergen were about 0 degrees Celsius at the time of the accident--thus the tissues had degraded little--and the remains were recovered quickly. Nevertheless, he says, "DNA typing should now be regarded as a major [tool] for victim identification."


text:
ASIAN markets fell in New Year's Eve-shortened trade as hopes that US lawmakers will reach a deal to avert the fiscal cliff faded just a day before a deadline.
However on Monday there was some bright news out of China, where a survey by HSBC showed manufacturing activity hit a 19-month high in December.
Hong Kong closed flat, edging down 9.67 points to 22,656.92, but it closed out the year 22.91 per cent higher.
Sydney closed 0.48 per cent lower, shedding 22.4 points to 4,648.9, although the index is up 14.60 per cent over the past 12 months.
Wellington was 0.35 per cent lower, shedding 14.39 points to 4,066.51, but adding 24.51 per cent for 2012.
In the afternoon Shanghai surged 1.12 per cent.
Tokyo, Seoul, Taipei, Jakarta, Bangkok and Manila were all closed for public holidays.
Despite the losses on Monday all the region's stock markets ended the year higher, with Bangkok the standout performer, surging almost 36 per cent, while Shanghai was the weakest, adding less than three per cent over the 12 months.
Republicans and Democrats on Capitol Hill ended Sunday without reaching a compromise over a deficit-cutting budget that would be less painful than the deep spending cuts and tax hikes due to take effect on Tuesday.
Leaders remained locked in talks that appeared to be making little headway, with each side blaming the other as analysts warned the measures could tip the economy into recession.
Senate Republican Minority Leader Mitch McConnell warned that, despite through-the-night talks, negotiators were still a long way from success, with Democrats not responding to a "good faith offer" from his party.
Senate Democratic Majority Leader Harry Reid agreed talks were at a standstill, adding: "There is still significant distance between the two sides, but negotiations continue."
If talks fail on Monday President Barack Obama has demanded a vote on his fallback plan that would preserve lower tax rates for families on less than $250,000 a year and extend unemployment insurance for two million people.
But Stan Shamu, a market strategist at IG in Sydney, said he expected some sort of plan to come out.
"No one knows how this will play out, but the most likely scenario is a patch-up deal to avoid a fiscal catastrophe in the New Year," he told Dow Jones Newswires.
On currency markets the euro rose to $US1.3207 from $US1.3217 in late US trade Friday, but the US dollar rose to 86.06 yen from 85.98 yen. The Japanese unit continued to be weighed by expectations the country's central bank will unveil fresh monetary easing measures next month.
The euro bought 113.67 yen from 113.62 yen.
News out of Beijing was better, however, with banking giant HSBC saying its final purchasing managers' index (PMI) of the year hit 51.5, up from 50.5 in November and a fourth straight month of improvement.
A reading above 50 indicates expansion in the key sector, while one below signals shrinkage.
The figures reinforce recent indications that the world's second-largest economy is finally emerging from its slumber.
"Such a momentum is likely to be sustained in the coming months when infrastructure construction runs into full speed and property market conditions stabilise," Qu Hongbin, HSBC's chief economist for China, said in the release.
On oil markets New York's main contract, light sweet crude for delivery in February, shed 28 cents to $US90.85 a barrel and Brent North Sea crude for February slipped one cent to $US110.61.
Gold was at $US1,660.60 at 0445 GMT compared with $US1,658.90 late Friday.
Originally published as Asian markets weighed by US fiscal cliff


text:
NewswireToday - /newswire/ -
Springville, UT, United States, 2007/09/26 - Founder and former CEO of online dating firm MingleMatch and member of Utah Angels Investment Group adds expertise to hosted technology firm.
InsideSales.com, the leading provider of on-demand Lead Management solutions, announced today that Ben Peterson has agreed to become the third member of the InsideSales.com Board of Advisors.
Ben has proven expertise in business development and internet marketing that we are already tapping into, said David Elkington, CEO of InsideSales.com. He has been involved in several successful startup ventures and has been of great help to us even before officially joining our board
Ben Peterson was the founder and CEO of the online dating firm MingleMatch, Inc., bootstrapping his company and, by focusing on the growing niche of social networking websites, grew from zero to millions of members. MingleMatch was acquired by publicly-held Spark Networks (LOV) in 2005. He has a great deal of expertise in the areas of online subscription models, advertising models, and social networking.
I am particularly excited about the hosted lead management and the patent-pending dialer technologies owned by InsideSales.com, said Mr. Peterson. They offer a more active tools and capabilities to increase leads and sales revenue for companies who have a web-based marketing platform.
Prior to MingleMatch, Mr. Peterson was Senior Vice President of Business Development and Online Advertising Sales for MyComputer.com (what is now Omniture), and co-founder of Allegiance Technologies.
He currently serves on the board of the Center for Economic Development of Orem, and is an active member of the Utah Angels Investment Group.
Mr. Peterson graduated from Brigham Young University in Business Management with an emphasis in Entrepreneurship.
About InsideSales.com
InsideSales.com is a leading provider of Lead Management solutions. The InsideSales.com solution provides tools to help companies manage leads generated through websites and other marketing initiatives, and to enhance and optimize their lead response strategies. These tools include mixed-media web form auto responders, outbound dialers, voice messaging, inbound call routing systems, voice broadcasting, and automated mixed-media drip campaign solutions. All of these tools are hosted and provided on-demand. 300 companies worldwide, including Omniture, Franklin Covey, Whisper Creek Log Homes, and Prosper Learning, Inc., use InsideSales.coms solutions.
Written by / Agency / Source: InsideSales.com
Availability: All Regions (Including Int'l)
Traffic Booster: [/] Quick Newswire Today Visibility Checker
Distribution / Indexing: [+]


text:
The Hill-Side - Spring 2013
The Hill-Side Spring Collection has just arrived at the shop. Crafted in Brooklyn, the team at The Hill-Side sources Japanese textiles in an interesting mix of fabrics and patterns that will elevate any wardrobe.
The Spring Collection includes beautiful linen florals, solid double indigo cloths and selvedge edged chambrays: no matter the occasion, you'll easily find a smart choice from our selection. You can shop the collection here.


text:
Our stay at the Lakehouse B&B was amazing! When we arrived we were greeted by Justin who gave us a tour of the beautiful home and showed us our room that we absolutely loved! The views of the lake were incredible, especially at sunset. After...More
Getting you more information on this room
Getting you more information on this room
"Only one room with king bed, but all the rooms are very nice with plenty of room."


text:
Expect 3G usage to grow strongly in India: Asim Warsi,Vice President, Samsung Mobile
Global adoption of high speed data got a massive boost in developed markets since the launch of the Apple iPhone and other competitors over 5 years ago. Now that smartphones are increasingly becoming affordable, do hardware manufacturers see mobile broadband as the key to their future? Asim Warsi, Vice President, Samsung Mobile shares his thoughts on the future.
We've seen how mobile data usage has spiked in developed markets thanks to smartphones. Do you see the same thing happening with 3G usage here?
Asim Warsi: I think it works both ways. The advent of 3G and stabilization of services provides a trigger for consumers to buy smartphones and at the same time availability of affordable 3G phones and smartphones, gives consumers a reason to download and share more and fully experience the benefits of 3G . Given that the smartphone market is showing a very strong growth in the Indian market, I do expect the 3G usage to grow strongly in the coming days.
Do you believe that the content available for mobile platforms and the network experience in India is world class or is there still some way to go?
Asim Warsi: I think the content is something developers all over the world , including those in India , are continuously working on and I think its going to only evolve further as we go along As far as the network experience is concerned, with 3G services stabilizing and LTE in the process of coming in, consumers' experience is only going to get better in the coming times.
Is the smartphone now more a status symbol than an information device? What are you seeing in terms of user demographics? What is driving smartphone sales in India?
Asim Warsi: I think consumers are realizing the benefits of Smartphones and I see a lot of upgradation happening from feature phones to smartphones .I also see a lot of young consumers upgrading to smartphones apart from the more evolved, tech savvy consumers. Affordability in addition to growing awareness on the benefits of Smartphones is driving adoption.
Will feature phones continue to hold sway in a price-sensitive market like India or do you see them being replaced by smartphones?
Asim Warsi: I see two things happening - Feature phones which hold 75% of the market at present, will evolve and have more smartphone-like features while smartphone penetration will continue to grow as consumers realise the benefits of smartphones and the devices themselves become more affordable.
What about tabs vs smartphones - will they cannibalize each other or do you see them as being complimentary?
Asim Warsi: I see both segments growing in India since I believe that there is a tremendous potential for these devices in the Indian market.


text:
Amazon Canada: Crock-Pot 4-Quart Stainless Steel Slow Cooker Only $18
I'm already stressing about dinners and lunches and its only the first day back to school! I work from home and find it hard to give myself a break to go and cook a healthy lunch. I need to get a list of recipes together that are either quick to make or I can make ahead. The same goes for dinner time, as my kids have lots of extracurricular activities booked and I need them to eat right after school. A slow cooker is seriously a life and time saver in these situations. Amazon has an awesome deal on right now for the Crock-Pot 4-quart stainless steel oval slow cooker, now only $17.98 with a regular price of $24.99.
I actually have this exact slow cooker, but I have no idea where I got it and what I paid because I've had it for years. It is a good size, cooks the food perfectly and I really have absolutely no complaints. I've also used it to make a hot chocolate bar at home last Christmas. I just made a large batch and everyone scooped from it. This year I'm going to try that with apple cider. Slow cookers are seriously very versatile.
Four quarts is equal to 3.7L, which says will feed 4-5 people and I'm going to assume children are only half a person, so it is probably more than enough for a family of five like mine. It has stick-resistant coating so it is very easy to get clean and I can also attest to this. You know when you cook those hearty dishes that inevitably stick to the sides in a crusty, hard mess? Well, those come off with just a wipe of the bowl. It can even go in the dishwasher!
There are a few reviews on Amazon's site, giving it a 4 out of 5 star rating, including this one:
If you want a basic slow cooker for an affordable price, this is the one. But emphasis on the word "basic". This is not my first Crock-Pot, and I can see how the quality has slipped over the years. That said, however, it does the job. I know that the high setting is going to cook quickly, the low setting will probably be the ideal setting for actual slow cooking, and the hold warm setting does just that.
Amazon offers free shipping on orders over $25, so you might want to look around for a low-cost item to add to your order and get your shipping covered.
(expiry: unknown)
TOPICS: Gift Ideas Kitchen


text:
Deputies Await Autopsy Results For Body Discovered In Porterville Orange Grove
PORTERVILLE, Calif. (KMPH) —
Tulare County deputies are awaiting autopsy results for a body discovered in an orange grove just outside of Porterville.
Deputies were called out to the area of Avenue 124 and Road 248 early Thursday morning.
Police are not releasing the gender or identity of the body.
Anyone with information is asked to call the Tulare County Sheriff's Department.


text:
The Baltimore Orioles were happy to have a day off after a grueling stretch, but an off day probably isn't good news for the Kansas City Royals.
The Orioles have won all four games after not playing the day before heading into Friday night's opener of a three-game home set against a Royals team that has struggled following time off.
Baltimore (28-17) dropped two of three to Boston this week, capped by Wednesday's 6-5 defeat. That finished a 12-8, 20-day stretch for the Orioles, who had one day off in that span due to a postponement against Texas.
"I'm real proud of the effort and the way these guys have gotten after it for these 20 games," manager Buck Showalter said. "We knew looking at the schedule it was going to be a real challenge for us physically, mentally and emotionally."
The Orioles won the first game of a doubleheader against the Rangers on May 10 following the rainout to improve to 4-0 coming off a day off, not counting another win on opening day.
Kansas City (17-26) has lost all five times after not playing the day before, including two contests after postponements and not including an opening day defeat. The Royals, who've lost four straight in Baltimore, weren't well rested when they were swept in a two-game home set by the Orioles from May 16-17, with the opener going 15 innings.
Adam Jones homered twice in that series, including the game-winner in the 15th. Jones is batting .355 during a career-best 15-game hitting streak in which he has six homers and 12 RBIs.
Baltimore leads the majors with 69 homers and is 13-1 when Jones goes deep.
Nick Johnson had his first multihomer game in nearly six years Wednesday. Johnson is 13 for 37 (.351) with four homers and 10 RBIs this month after his 0-for-26 April.
Kansas City, meanwhile, has 33 homers for the AL's second-lowest total. The Royals, however, had their most longballs in a three-game set this season with five as they lost two of three to the Yankees this week.
Jeff Francoeur had two homers while slumping Eric Hosmer went 5 for 11 in the Bronx.
Jason Hammel (5-1, 3.12 ERA) will start Friday for Baltimore. He posted a 2.09 ERA in his first six outings, but knee pain has been a factor in his 6.97 mark over his last two.
The right-hander surrendered four runs over 5 1-3 innings Saturday but got credit for a 6-5 win at Washington.
"Obviously, I want to be getting deeper into ballgames, but the knee is just not cooperating right now," Hammel told the Orioles' official website.
Hammel is 0-2 with a 7.63 ERA in three career starts against the Royals.
Kansas City's Bruce Chen (3-4, 4.17) is headed in the opposite direction, going 3-0 with a 2.75 ERA in his last three starts after beginning 0-4 with a 4.98 ERA. The left-hander gave up two runs over 6 1-3 innings Saturday in a 7-3 victory over Arizona.
Chen is 2-1 with a 3.74 ERA in four starts against the team he pitched for from 2004-06. Jones is 5 for 11 against him with a homer.
The Orioles lead the majors with a 7-3 record against southpaw starters.