Do contrario da licao 2, a licao 3 mostra as tecnicas de gerenciamento de sessao no servidor. Voce deve gerenciar os estados no servidor quando existe uma quantidade grande de dados e se torna oneroso a ida e vinda desses dados entre o cliente e o servidor. Outro grande motivo e a seguranca, podemos trabalhar com dados sigilosos que nao podem correr o risco de ficar disponivel na maquina do cliente.O asp.net disponibiliza duas formas de gerenciar pelo servidor, essas formas ja foram citadas em licoes anteriores. Os metodos sao Application State e Session State.O primeiro e global, ou seja, os dados sao acessados por todos os usuario em qualquer pagina. Os dados armazenados no Application State sao os mesmos para todos os usuarios. Ja o segundo metodo Session State e unico por cada usuario, cada usuario tem a sua sessao, da mesma forma que o Application State os dados armazenados em Session State sao acessados em qualquer pagina.Application StateOs dados armazenados no Application State sao globais e podem ser acessados em qualquer requisicao de qualquer pagina. A classe HttpApplicationState e um dicionario de chave e valor e pode ser acessado pelo nome do chave. Os dados armazenados no Application State nao sao permanentes, no momento em que a aplicacao e reiniciada, por exemplo quando o IIS ou o servidor e iniciado os dados armazenados neste sessao sao perdidos.Session State Os dados armazenados com Session State tambem podem ser acessados de qualquer pagina, a grande diferenca e que e unico por usuario (browser). Por padrao esses dados sao armazenados na memoria do servidor, mas e possivel e configurar para utilizar cookies, em State Serve ou em um banco de dados.De forma similar ao Application State, o Session State e um dicionario de chave e valor, como demonstra o codigo:// Caso a sessao nao existaif (Session["lastVisit"] != null){ Label1.Text = ((DateTime)Session["lastVisit"]).ToString();}else{ Label1.Text = "Session does not have last visit information.";}// Definindo um valor para a sessaoSession["lastVisit"] = DateTime.Now;Caso queira desabilitar o uso de sessoes pode fazer no web.config:<configuration><system.web><sessionState mode="off"/></system.web></configuration>Ou definir na diretiva da pagina no caso de desabilitar em paginas especificas, utilizando a propriedade EnableSessionState:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"Inherits="_Default" EnableSessionState = "False"%>E possivel configurar a forma com que ira utilizar sua sessao:InProc: e o modo padrao. E o que oferece melhor desempenho em relacao as outras opcoes. No entanto ele fica limitado em cenarios de balanceamento de carga entre servidores. Pois nao tera como garantir que um usuario comece e termine seu processo no mesmo servidor.StateServer: Nesta configuracao os dados armazenados na sessao nao sao perdidos quando a aplicacao e reiniciada, e neste cenario e possivel fazer o compartilhamento entre servidores. O StateServer e um servico do asp.net que esta em qualquer maquina que possua o FrameWork instalado. Este servico nao e configurado para iniciar automaticamente e sim manualmente, por isso deve ser feito essa mudanca para que inicie automaticamente caso deseja usar.SQLServer: Tem os mesmos beneficios do StateServer, armazena os dados quando a aplicacao e iniciada e pode ser utilizado em varios servidores. Em hardware identico o StateServer supera o SQLServer, porem