Compartilhar via


Recomendações sobre Gerenciamento de Estado do ASP.NET

Gerenciamento de estado é o processo pelo qual você mantém o estado e as informações das páginas entre várias solicitações das mesmas.É sabido que em qualquer tecnologia baseada em HTTP, páginas de Web Forms são desprovidas de estado, o que significa que elas não indicam automaticamente quando as solicitações em sequência são todas do mesmo cliente ou mesmo se uma única instância de navegador está ainda ativamente exibindo uma página ou site.Além disso, páginas são destruídas e recriadas com cada processamento no servidor; portanto, as informações dela não existirão além do ciclo de vida de uma página.Para obter mais informações sobre processamento no servidor e ciclo de vida de páginas Web Forms, consulte Visão Geral do Ciclo de Vida da Página ASP.NET.

O ASP.NET oferece várias maneiras para manter o estado entre processamentos no servidor.Cada uma das opções escolhidas depende fortemente do seu aplicativo e elas devem estar baseadas nos critérios a seguir:

  • Quanta informação você precisa armazenar?

  • O cliente aceita cookies persistentes ou em memória?

  • Você deseja armazenar as informações no cliente ou no servidor?

  • As informações são sigilosas?

  • Quais critérios de desempenho e de largura de banda você tem para seu aplicativo?

  • Quais são as capacidades dos navegadores e dispositivos que você tem como alvo?

  • Você precisa armazenar informações para cada usuário?

  • Por quanto tempo é necessário armazenar as informações?

  • Você tem vários servidores, vários processos em um computador ou um único processo que serve o aplicativo?

Opções de gerenciamento de estado do lado do cliente

Armazenar informações de página usando opções de gerenciamento do lado do cliente não usa os recursos do servidor.Essas opções normalmente têm menor segurança, mas melhora o desempenho no servidor porque a demanda por recursos dele é moderada.No entanto, como deve-se enviar informações para o cliente para que sejam armazenadas, há um limite prático na quantidade de informações você pode armazenar dessa forma.

Seguem as opções de gerenciamento de estado do lado do cliente que o ASP.NET suporta:

  • Estado de exibição

  • Estado de controle

  • Campos ocultos

  • Cookies

  • Query Strings(String de consulta da url)

O estado de exibição

As páginas Web Forms fornecem a propriedade ViewState como uma estrutura interna para manter informações automaticamente entre várias solicitações para a mesma página.O estado de exibição é mantido como um campo hidden na página.Para obter mais informações, consulte Visão Geral sobre o Gerenciamento de Estado do ASP.NET.

Você pode usar o estado de exibição para armazenar informações específicas da página durante o processamento quando a página solicitar a ela mesma.Por exemplo, se o seu aplicativo está mantendo informações específicas de usuário — ou seja, informações que são usadas na página mas não são necessariamente parte de algum controle —, você poderá armazená-las no estado de exibição.

As vantagens de usar o estado de exibição são:

  • Nenhum dos recursos do servidor são necessários   O estado de exibição está contido numa estrutura dentro do código da página.

  • Implementação simples O estado de exibição não requer programação própria para ser usada.Ele está ativado por padrão para manter os dados de estado nos controles.

  • Recursos de segurança reforçados   As informações do estado de exibição são formatadas em hash, compactadas e codificadas para implementações Unicode, que oferecem maior segurança do que usar campos hidden.

As desvantagens de usar o estado de exibição são:

  • Considerações de performance   Como o estado de exibição é armazenado na própria página, armazenar valores grandes pode causar mau desempenho na página quando os usuários forem exibí-la e postá-la.Isso é especialmente relevante em dispositivos móveis, onde a largura de banda geralmente é uma limitação.

  • Limitações de dispositivo   Dispositivos móveis podem não ter capacidade em memória para armazenar uma grande quantidade de informações de estado de exibição.

  • **Possíveis riscos de segurança   **O estado de exibição é armazenado em um ou mais campos hidden na página.Embora o estado de exibição armazene dados em um formato de hash, ele pode ainda ser violado.As informações do campo oculto poderão ser vistas se o código-fonte da página for exibido diretamente, criando um problema potencial de segurança.Para obter mais informações, consulte Segurança de aplicativos da Web ASP.NET e Práticas de segurança básica para aplicativos da Web.

Para obter mais informações sobre como usar estado de exibição, consulte Visão geral sobre estado modo de exibição.

Estado de controle

A estrutura de página ASP.NET fornece a propriedade ControlState como um maneira de armazenar dados de controle customizados entre os acessos ao servidor.Por exemplo, se você escreveu um controle personalizado que tem diversas guias que mostram informações diferentes, para que o controle funcione como esperado, o controle precisa saber qual guia está selecionada entre os acessos.O estado de exibição pode ser usado para essa finalidade, mas os desenvolvedores podem desativar o estado de exibição em nível de página, efetivamente quebrando o seu controle.Diferentemente do estado de exibição, estado de controle não pode ser desativado, dessa forma ele oferece uma maneira mais confiável de armazenar dados do estado de controle.

As vantagens de usar o estado de controle são:

  • Nenhum dos recursos do servidor são necessários   Por padrão, o estado de controle é armazenado nos campos ocultos da página.

  • Confiabilidade   Como o estado de controle não pode ser desativado como o estado de exibição, o estado de controle é um método mais confiável para gerenciar o estado dos controles.

  • Versatilidade   Adaptadores customizados podem ser gravados para controlar como e onde dados do estado de controle serão armazenados.

As desvantagens de usar o estado de controle são:

  • Um pouco de programação é necessário   Enquanto o framework de página ASP.NET oferece uma base para o estado de controle, estado de controle é um mecanismo customizado de persistência de estado.Para utilizar por completo estado de controle, deve-se escrever código para salvar e carregar o estado de controle.

Os campos ocultos

Você pode armazenar informações específicas da página num campo oculto como uma forma de manter o estado da sua página.Para mais informações sobre campos ocultos, consulte Recomendações sobre Gerenciamento de Estado do ASP.NET.

Se você usar campos ocultos, torna-se melhor armazenar somente pequenas quantidades de dados que são alterados com frequência no cliente.

Observação:

Se você usar campos ocultos, deve-se enviar suas páginas ao servidor usando o método HTTP POST, em vez de solicitar a página pela sua URL (o método HTTP GET).

As vantagens de usar campos ocultos são:

  • Nenhum dos recursos do servidor são necessários   O campo oculto é armazenado e lido pela página.

  • Amplo suporte   Quase todos os navegadores e dispositivos do cliente suportam formulários com campos ocultos.

  • Implementação simples   Campos ocultos são controles padrão HTML que não exigem nenhuma lógica de programação complexa.

As desvantagens de usar campos ocultos são:

  • Possíveis riscos de segurança   O campo oculto pode ser violado.As informações do campo oculto poderão ser vistas se o código-fonte da página for exibido diretamente, criando um problema potencial de segurança.Você pode manualmente criptografar e descriptografar o conteúdo de um campo oculto, mas para fazer isso são necessárias codificação extra e sobrecarga.Se segurança for uma preocupação, considere o uso um mecanismo de estado baseado em servidor para que nenhuma informação sigilosa seja enviada ao cliente.Para obter mais informações, consulte Segurança de aplicativos da Web ASP.NET e Práticas de segurança básica para aplicativos da Web.

  • Arquitetura de armazenamento simples   O campo oculto não dá suporte a tipos de dados mais elaborados.Os campos hidden oferecem um campo simples do tipo string para colocar informações.Para armazenar vários valores, deve-se implementar strings delimitadas e o código para analisar as sequências de caracteres.Você pode manualmente serializar em campos ocultos e deserializar a partir de campos ocultos tipos de dados mais elaborados.No entanto, requer-se código extra para fazer isso.Se você precisar armazenar tipos de dados mais elaborados no cliente, considere usar estado de exibição.O estado de exibição tem serialização interna, e armazena dados nos campos ocultos.

  • Considerações de performance   Como os campos ocultos são armazenados na própria página, armazenar valores grandes pode causar mau desempenho na página quando os usuários forem exibí-la e postá-la.

  • Limitações de armazenamento   Se a quantidade de dados num campo oculto se torna muito grande, alguns firewalls e proxies impedirão o acesso à página que os contém.Como a quantidade máxima pode variar com diferentes firewalls e implementações proxy, campos ocultos grandes podem esporadicamente ser problemáticos.Se for preciso armazenar vários itens de dados, considere seguir um destes procedimentos:

    • Coloque cada item em um campo oculto separado.

    • Use estado de exibição com Reunir ativado, que separará automaticamente os dados em vários campos ocultos.

    • Em vez de armazenar dados no cliente, persista os dados no servidor.Quanto mais dados forem enviados ao cliente, mais lento será o tempo de resposta do seu aplicativo, porque o navegador vai precisar baixar ou enviar mais dados.

Cookies

Os cookies são úteis para armazenar pequenas quantidades de informações alteradas com frequência no cliente.As informações são enviadas com a solicitação ao servidor.Para obter detalhes sobre como criar e ler cookies, consulte Visão Geral de Cookies do ASP.NET.

As vantagens do uso de cookies são:

  • Regras de expiração configuráveis   O cookie pode expirar quando terminar a sessão do navegador, ou pode permanecer indefinidamente no computador cliente, estando sujeito às regras de expiração no cliente.

  • Nenhum dos recursos do servidor são necessários   O cookie é armazenado no cliente e lido pelo servidor após uma postagem.

  • Simplicidade   O cookie é uma estrutura leve, baseada em texto com simples pares de chave-valor.

  • Persistência de dados   Embora a durabilidade do cookie em um computador cliente esteja sujeita a processos de expiração no cliente e à intervenção do usuário, os cookies são geralmente a forma mais durável de persistência de dados no cliente.

As desvantagens do uso de cookies são:

  • Limitações de Tamanho   A maioria dos navegadores colocam um limite de 4096 bytes no tamanho de um cookie, embora a suporte a cookies de 8192 bytes está se tornando mais comum em versões mais recentes dos navegadores e dispositivos de cliente.

  • Não aceitação configurável pelo usuário   Alguns usuários desativam seus navegadores ou dispositivos de cliente para receber cookies, assim, limitando essa funcionalidade.

  • Possíveis riscos de segurança   Cookies estão sujeitos a violação.Os usuários podem manipular cookies em seu computador, que podem potencialmente causar um risco de segurança ou fazer com que o aplicativo que é dependente de cookie falhe.Além disso, embora os cookies são acessíveis somente pelo domínio que os enviou ao cliente, hackers tem historicamente encontrado maneiras de acessar os cookies de outros domínios no computador do usuário.Você pode manualmente criptografar e descriptografar os cookies, mas isso requer codificação extra e pode afetar o desempenho do aplicativo em razão do tempo necessário para criptografar e descriptografar.Para obter mais informações, consulte Segurança de aplicativos da Web ASP.NET e Práticas de segurança básica para aplicativos da Web.

    Observação:

    Cookies são usados para Personalização, onde o conteúdo é personalizado para um usuário conhecido.Na maioria dos casos, o problema é a identificação ao invés da autenticação.Assim, normalmente pode-se proteger um cookie que é usado para identificação, armazenando o nome de usuário, nome da conta ou um único ID de usuário (como um GUID) no cookie e, em seguida, usar o cookie para acessar a infraestrutura de usuário personalizado no site.

Strings de Consulta

Uma string de consulta é uma informação que será acrescentada ao final da URL da página.Para obter mais informações, consulte Visão Geral sobre o Gerenciamento de Estado do ASP.NET.

Você pode usar uma string de consulta para enviar dados de volta para sua página ou para outra página através da URL.Strings de consulta fornecem uma maneira simples, mas limitada, de manter informações de estado.Por exemplo, strings de consulta são uma maneira fácil para passar informações de uma página para outra, como passar um número de produto para outra página onde ele será processado.

Vantagens de usar strings de consulta são:

  • Nenhum dos recursos do servidor são necessários   A string de consulta está contida na solicitação HTTP para uma determinada URL.

  • Amplo suporte   Quase todos os navegadores e dispositivos de cliente suportam uso de strings de consulta para passar valores.

  • Implementação simples   ASP.NET oferece suporte completo para o método de consulta por strings, incluindo métodos de leitura de strings de consulta usando a propriedade Params do objeto HttpRequest.

Desvantagens de usar strings de consulta são:

  • Possíveis riscos de segurança   As informações na string de consulta são visíveis diretamente para o usuário por meio da UI do navegador.Um usuário pode indicar a URL ou enviar a URL para outros usuários, assim passando as informações da string de consulta juntamente.Se você estiver preocupado com quaisquer dados confidenciais na string de consulta, considere usar campos ocultos em um formulário que usa POST em vez de usar strings de consulta.Para obter mais informações, consulte Segurança de aplicativos da Web ASP.NET e Práticas de segurança básica para aplicativos da Web.

  • Capacidade limitada   Alguns navegadores e dispositivos clientes impõem um limite no comprimento da URL em 2083 caracteres.

Resumo dos métodos de Gerenciamento de Estado do lado do cliente

As tabelas a seguir listam as opções de gerenciamento de estado do cliente que estão disponíveis com o ASP.NET, e fornece recomendações sobre quando você deve usar cada opção.

Opção de gerenciamento de estado

Uso recomendado

Estado de exibição

Usar quando for necessário armazenar pequenas quantidades de informações para uma página que irá postar para si mesma.O uso da propriedade ViewState oferece a funcionalidade com segurança básica.

Estado de controle

Usar quando for necessário armazenar pequenas quantidades de informações do estado de um controle entre processamentos no servidor.

Campos ocultos

Usar quando for necessário armazenar pequenas quantidades de informações de uma página que irá postar para ela mesma ou para outra página, e quando segurança não for um problema.

Observação:
Você pode usar campo oculto somente nas páginas que são enviadas ao servidor.

Cookies

Usar quando for necessário armazenar pequenas quantidades de informações no cliente e quando segurança não for um problema.

String de Consulta

Usar quando você estiver transferindo pequenas quantidades de informações de uma página para outra e quando segurança não for um problema.

Observação:
Pode-se usar strings de consulta somente se você estiver solicitando a mesma página, ou outra página por um link.

Opções de Gerenciamento de Estado do lado do servidor

As opções do lado do servidor para armazenar informações da página geralmente possuem maior segurança do que as opções do lado do cliente, mas elas podem usar mais recursos do servidor, que podem levar a problemas de escalabilidade quando o tamanho das informações é grande.O ASP.NET oferece várias opções para implementar gerenciamento de estado do lado do servidor.Para obter mais informações, consulte Visão Geral sobre o Gerenciamento de Estado do ASP.NET.

Seguem as opções de gerenciamento de estado do lado do servidor que o ASP.NET suporta:

  • Application State (Estado do Aplicativo)

  • Session State (Estado da sessão)

  • Propriedades de Perfil

  • Suporte a banco de dados

Application State (Estado do Aplicativo)

O ASP.NET provê o estado do aplicativo por meio da classe HttpApplicationState como um método de armazenamento de informações globais do aplicativo que estão visíveis para o todo o aplicativo.Variáveis de estado do aplicativo são, na verdade, variáveis globais para um aplicativo ASP.NET.Para mais informações, consulte: Visão geral do estado do aplicativo ASP.NET.

Você pode armazenar os valores específicos do aplicativo no estado do aplicativo, que é então gerenciado pelo servidor.Para obter mais informações, consulte Visão Geral sobre o Gerenciamento de Estado do ASP.NET.

Os dados que são compartilhados por várias sessões e não mudam com frequência são o tipo ideal de dados para inserir nas variáveis de estado do aplicativo.

As vantagens de usar o estado da aplicação são:

  • Implementação simples   Estado do aplicativo é fácil de usar, familiar aos desenvolvedores ASP e consistente com as outras classes do Framework .NET.

  • **Escopo do aplicativo   **Como o estado do aplicativo é acessível a todas as páginas do aplicativo, armazenar informações no estado do aplicativo pode significar a manutenção de apenas uma única cópia das informações (por exemplo, em oposição ao manter cópias das informações em estado de sessão ou em páginas individuais).

As desvantagens de usar o estado da aplicação são:

  • Escopo do aplicativo   O escopo do estado do aplicativo também pode ser uma desvantagem.Variáveis armazenadas no estado do aplicativo são globais somente para o processo no qual o aplicativo está sendo executado, e cada processo do aplicativo pode ter valores diferentes.Portanto, não se pode depender do estado do aplicativo para armazenar valores únicos ou atualizar contadores globais nas configurações dos vários servidores e dos vários processos.

  • Durabilidade limitada dos dados   Como os dados globais que são armazenados no estado da aplicação são voláteis, eles serão perdidos se o processo que os contém for destruído, como numa queda, upgrade, ou desligamento do servidor.

  • Requisitos de recursos   Estado de aplicativo requer memória do servidor, que pode afetar o desempenho do servidor, bem como a escalabilidade do aplicativo.

Um cuidadoso design e implementação do estado do aplicativo podem aumentar o desempenho do aplicativo Web.Por exemplo, colocando um dataset comumente usado, e relativamente estático no estado do aplicativo pode aumentar desempenho do site, pela redução do número total de solicitações em um banco de dados.No entanto, há uma compensação pelo desempenho.Variáveis de estado do aplicativo que contêm grandes blocos de informações reduzem o desempenho do servidor Web à medida que aumenta a carga do servidor.A memória ocupada por uma variável armazenada no estado do aplicativo não será liberada até que o valor seja removido ou substituído.Portanto, é melhor usar variáveis de estado do aplicativo apenas com datasets pequenos e raramente alterados.Para obter mais informações, consulte Visão geral sobre desempenho.

Session State (Estado da sessão)

O ASP.NET oferece um estado de sessão, que está disponível na classe HttpSessionState, como um método de armazenar informações específicas da sessão, que ficam visíveis somente dentro da sessão.O estado de sessão do ASP.NET identifica solicitações do mesmo navegador durante um intervalo de tempo limitado como uma sessão, e oferece uma maneira de persistir os valores de variáveis durante a duração dessa sessão.Para obter mais informações, consulte Visão Geral sobre o Gerenciamento de Estado do ASP.NET e Visão geral sobre Estado de sessão ASP.NET.

Pode-se armazenar valores específicos da sessão e objetos no estado da sessão, os quais então são gerenciados pelo servidor e disponibilizados para o navegador ou dispositivo cliente.Os dados ideais para serem armazenados em variáveis de estado da sessão são dados confidenciais de vida curta, que são específicos para uma sessão individual.

As vantagens de usar o estado de sessão são:

  • Implementação simples   Estado de sessão é fácil de usar, familiar aos desenvolvedores ASP e consistente com as outras classes do Framework .NET.

  • Eventos específicos da sessão   Eventos de gerenciamento de sessão podem ser gerados e usados pelo seu aplicativo.

  • Persistência de dados   Dados colocados em variáveis no estado de sessão podem ser preservados enquanto o Serviço de Informações da Internet (IIS) reinicializa e o processo operador é reiniciado, sem perder os dados da sessão porque os dados são armazenados em outro espaço de processo.Adicionalmente, os dados de estado da sessão podem ser persistidos entre vários processos, como numa Web farm ou um ambiente Web.

  • Escalabilidade de plataforma   O estado da sessão pode ser usado em ambas as configurações multicomputadorizadas e multiprocessadas, assim, otimizando cenários de escalabilidade.

  • Suporte à ausência de cookies   O estado de sessão funciona em navegadores que não oferecem suporte cookies HTTP, embora estado de sessão é mais comumente usado com cookies para oferecer identificação de usuário ao aplicativo Web.No entanto, usar estado de sessão sem cookies requer que o identificador de sessão seja colocado na string de consulta, que está sujeita às questões de segurança mencionadas na seção Strings de Consulta deste tópico.Para obter mais informações sobre como usar estado de sessão sem cookies, consulte Administrando ites da Web do ASP.NET.

  • Extensibilidade   Você pode customizar e estender o estado de sessão escrevendo seu próprio provedor de estado da sessão.Assim, os dados do estado da sessão podem ser armazenados em um formato de dados customizado em uma variedade de mecanismos de armazenamento de dados, como um banco de dados, um arquivo XML, ou até mesmo a um serviço Web.Para obter mais informações, consulte Implementar um Provedor de Armazenamento de Estado da Sessão.

As desvantagens de usar o estado de sessão são:

  • Considerações de desempenho   As variáveis de estado da sessão variáveis ficam na memória até que elas sejam ou removidas ou substituídas e, portanto, podem prejudicar o desempenho do servidor.Variáveis de estado da sessão que contêm blocos de informações, como grandes datasets, poderão afetar o desempenho do servidor Web à medida que aumenta de carga do servidor.

Propriedades de Perfil

O ASP.NET oferece um recurso denominado propriedades de perfil, que permite que você armazene dados específicos de usuário.Ele se assemelha ao estado de sessão, exceto que, diferentemente do estado de sessão, os dados de perfil não são perdidos quando uma sessão de usuário expira.O recurso de propriedades de perfil utiliza um perfil ASP.NET que é armazenado em um formato persistente e associado a um usuário individual.O perfil ASP.NET permite-lhe gerenciar informações do usuário sem exigir que você crie e mantenha seu próprio banco de dados.Além disso, o perfil indisponibiliza a informações de usuário disponível usando uma API fortemente digitada que você pode acessar de qualquer lugar em seu aplicativo.Você pode armazenar objetos de qualquer tipo no perfil.O recurso de perfil ASP.NET fornece um sistema de armazenamento genérico que permite que você defina e mantenha praticamente qualquer tipo de dados enquanto ainda torna os dados disponíveis de uma maneira segura.Para obter mais informações, consulte Visão geral sobre propriedades de perfil do ASP.NET.

As vantagens de usar as propriedades de perfil são:

  • Persistência de dados   Dados colocados em propriedades de perfil são preservados enquanto o IIS reinicia e o processo operador é reiniciado sem perder dados porque os dados são armazenados em um mecanismo externo.Além disso, as propriedades de perfil podem ser persistidas entre vários processos, como em uma Web farm ou um ambiente Web.

  • Escalabilidade de plataforma   As propriedades de perfil podem ser usadas em ambas as configurações multicomputadorizadas e multiprocessadas, assim, otimizando cenários de escalabilidade.

  • Extensibilidade   Para usar as propriedades de perfil, deve-se configurar um provedor de perfil.O ASP.NET inclui uma classe SqlProfileProvider que permite que você armazene dados do perfil em um banco de dados SQL, mas você também pode criar sua própria classe provedora de perfil que armazena os dados do perfil em um formato personalizado e para um mecanismo personalizado de armazenamento, como um arquivo XML ou um serviço da Web.Para obter mais informações, consulte Provedores de perfil ASP.NET e Implementando um provedor perfil.

As desvantagens de usar as propriedades de perfil são:

  • Considerações de desempenho   Propriedades de perfil é geralmente mais lento do que usar estado de sessão porque em vez de armazenar dados na memória, os dados são persistidos em um armazenamento de dados.

  • Requisitos de configuração adicionais   Ao contrário do estado de sessão, o recurso de propriedades de perfil requer uma quantidade considerável de configuração para usar.Para usar as propriedades de perfil, você deve configurar não só um provedor de perfil, deve-se pré-configurar todas as propriedades de perfil que você deseja armazenar.Para obter mais informações, consulte Visão geral sobre propriedades de perfil do ASP.NET e Definir propriedades de perfil ASP.NET.

  • **Manutenção de dados   **Propriedades de perfil exigem certa quantidade de manutenção.Como os dados do perfil são persistidos para armazenamento não volátil, você deve certificar-se que o aplicativo chama os mecanismos de limpeza apropriados, que são fornecidos pelo provedor de perfil, quando os dados se tornarem obsoletos.

Suporte a banco de dados

Em alguns casos, convém usar o suporte a banco de dados para manter o estado em seu site Web.Normalmente, o suporte ao banco de dados é usado em conjunto com cookies ou estado de sessão.Por exemplo, é comum para um site de comércio online manter informações de estado usando um banco de dados relacional pelas seguintes razões:

  • Segurança

  • Personalização

  • Consistência

  • Mineração de Dados

Os seguintes itens são recursos típicos de um site Web com banco de dados suportado por cookies:

  • Segurança   O visitante digita um nome de conta e senha em uma página de logon do site.A infraestrutura do site consulta o banco de dados com os valores de logon para determinar se o usuário tem direitos de utilizar o seu site.Se o banco de dados validar as informações do usuário, o site distribuirá um cookie válido que contém uma identificação exclusiva para esse usuário e desse computador cliente.O site concede acesso ao usuário.

  • Personalização   Com as informações de segurança em seus lugares, seu site poderá distinguir cada usuário pela leitura do cookie no computador cliente.Geralmente, os sites têm informações em banco de dados que descrevem as preferências de um usuário (identificado por uma ID exclusiva).Esse relacionamento é conhecido como Personalização.O site pode pesquisar as preferências do usuário usando a ID contida no cookie, e assim, colocar conteúdo e informações diante do usuário que se referem aos desejos específicos dele, reagindo às preferências do usuário ao longo do tempo.

  • Consistência   Se você tiver criado um site de comércio online, talvez queira manter registros transacionais de compras feitas entre bens e serviços no seu site.Essas informações podem ser referenciados pelo usuário e salvos no seu banco de dados confiável 's ID exclusiva.Ele pode ser usado para determinar se uma transação de compra foi concluída e determinar o curso de ação, se uma transação de compra falha.As informações também podem ser usadas para informar ao usuário do status de um pedido feito usando seu site.

  • Mineração de dados   Informações sobre o uso do site, seus visitantes ou as transações de produtos podem ser confiavelmente armazenadas em um banco de dados.Por exemplo, o departamento de desenvolvimento comercial talvez queira usar os dados coletados do seu site para determinar a linha de produtos do próximo ano ou a política de distribuição.O departamento de marketing pode querer examinar informações demográficas sobre os usuários no seu site.Os departamentos de engenharia e suporte podem querer examinar transações e observar as áreas onde o processo de compra pode ser melhorado.A maioria dos bancos de dados relacionais de nível empresarial relacionais, como o Microsoft SQL Server, contêm um grande conjunto de ferramentas para a maioria dos projetos de mineração de dados.

Criando então o site para consultar repetidamente o banco de dados usando a ID única durante cada etapa geral na situação acima, o site mantém seu estado.Assim, o usuário percebe que o site se lembra e reage a ele ou ela pessoalmente.

As vantagens de usar um banco de dados para manter o estado são:

  • Segurança   O acesso a bancos de dados requer autenticação e autorização rigorosas.

  • Capacidade de armazenamento   Você pode armazenar quanta informação desejar em um banco de dados.

  • Persistência de dados   As informações no banco de dados podem ser armazenadas enquanto você desejar e ele está não sujeito à disponibilidade do servidor Web.

  • Integridade de dados e robustez  Bancos de dados incluem vários recursos para manter dados bons, incluindo os disparadores (triggers) e integridade referencial, transações e assim por diante.Mantendo informações sobre transações em um banco de dados (em vez de na estado de sessão, por exemplo), pode-se recuperar os erros mais rapidamente.

  • Acessibilidade   Os dados armazenados no banco de dados estão acessíveis em uma ampla variedade de ferramentas para processamento de informações.

  • Amplo suporte   Existe um grande variedade de ferramentas de banco de dados disponíveis, e muitas configurações personalizadas estão disponíveis.

As desvantagens de usar um banco de dados para manter o estado são:

  • Complexidade   Usando um banco de dados para dar suporte ao gerenciamento de estado requer que as configurações de hardware e software seja mais complexas.

  • Considerações sobre desempenho   Construção ruim do modelo de dados relacional pode levar a problemas de escalabilidade.Além disso, executar muitas consultas ao banco de dados pode afetar o desempenho do servidor.

Resumo dos métodos de Gerenciamento de Estado do lado do servidor

As tabelas a seguir listam as opções de gerenciamento de estado do servidor que estão disponíveis com o ASP.NET, e fornece recomendações sobre quando você deve usar cada opção.

Opção de gerenciamento de estado

Uso recomendado

Application State (Estado do Aplicativo)

Usar quando você estiver armazenando informações globais e raramente modificadas, que são usadas por muitos usuários, e quando segurança não for um problema.Não armazene grandes quantidades de informações no estado do aplicativo.

Session State (Estado da sessão)

Usar quando você estiver armazenando informações de vida curta que são específicas para uma sessão individual e quando segurança não for um problema.Não armazene grandes quantidades de informações no estado de sessão.Certifique-se de que um objeto de estado da sessão será criado e mantido pelo tempo de vida de cada sessão em seu aplicativo.Em aplicativos que servem muitos usuários, isso pode ocupar recursos significativos do servidor e afetar a escalabilidade.

Propriedades de Perfil

Usar quando você estiver armazenando informações específicas do usuário que precisam ser persistentes após a sessão do usuário expirar e que precisam ser recuperadas novamente em visitas posteriores ao seu aplicativo.

Suporte a banco de dados

Usar quando você estiver armazenando uma grande quantidade de informações, gerenciando transações, ou quando as informações devem sobreviver à reinicialização do aplicativo e da sessão.Mineração de dados é uma preocupação, e a segurança é um problema.

Consulte também

Conceitos

Visão Geral sobre o Gerenciamento de Estado do ASP.NET

Visão Geral de Cookies do ASP.NET

Visão geral sobre propriedades de perfil do ASP.NET

Visão geral sobre Estado de sessão ASP.NET

Visão geral do estado do aplicativo ASP.NET

Outros recursos

O Que Há de Novo no Gerenciamento de Estado ASP.NET

Visão geral sobre estado modo de exibição