ViewState adds the ability to remember which selection an end made to a control set to runat=server without writing additional code.<BR>The session object is an object that allow a developer to persist data from page view to page view on a user by user basis.<BR>
ViewState is page specific (ie items saved to the viewstate of a page are only available to that page and are lost when you leave the page).<BR><BR>Items placed in session are specific to that session, but are available to all pages accessed in that session. This is an important difference if you want data available to multiple pages in your application.<BR><BR>Also remember that items in viewstate are actually stored in a hidden text field on your page so are posted back to the server with each postback. If you put something large (like a dataset) in viewstate, you are dragging it back and forth between the server and browser with each post. Session objects, on the other hand, sit in memory on the server.<BR><BR>The other place to preserve data is in Cache so you how have apples, oranges and bananas.