Etapa de planejamento 2: planejar configurações de ASP.NET

por Keith Newman e Robert McMurray

2.1. Configurações de estado de sessão

Quando os clientes visitam um site, eles geralmente navegam de uma página para outra e frequentemente alteram algumas das páginas que acessam. Caso queira controlar páginas que os usuários navegam e as alterações que fazem durante uma visita ao site, configure o estado de sessão.

Quando o estado de sessão é habilitado para o aplicativo, um usuário recebe uma ID de sessão exclusiva na sua primeira solicitação para uma página da Web a partir do aplicativo ASP.NET. Os dados de estado de sessão são armazenados no servidor em uma das seguintes maneiras:

  • Em processo: o estado de sessão é armazenado no processo de trabalho onde o aplicativo ASP.NET é executado.
  • Servidor de estado: o estado de sessão é armazenado fora do processo de trabalho onde o aplicativo ASP.NET é executado.
  • SQL Server: o estado de sessão é armazenado em um banco de dados do SQL Server.

Observação

Também é possível configurar o armazenamento fora do estado para dados de estado de sessão. No entanto, foge do escopo deste tutorial. O projeto Visual Studio 11 usa armazenamento personalizado para dar suporte ao SQL Server, SQL Compact e SQL Azure.

Dados de estado de sessão também podem ser armazenados no cliente em um cookie. Um cookie é um arquivo de texto que contém dados usados para armazenar informações sobre um usuário, como preferências e informações de autenticação do usuário.

As seções a seguir descrevem as opções de armazenamento de estado de sessão em mais detalhes.

Armazenar estado de sessão em processo

O estado de sessão em processo armazena dados de estado da sessão em um aplicativo ASP.NET, no processo de trabalho em que o aplicativo é executado. Este modo é o padrão para o IIS 8.

A vantagem de usar o estado de sessão em processo é que ele fornece acesso mais rápido aos dados do estado de sessão. No entanto, à medida que você armazena mais dados em uma sessão, consome mais memória, que pode desacelerar o desempenho do servidor.

Antes de configurar o estado de sessão em processo, considere o efeito da reciclagem do processo de trabalho sobre os dados do estado de sessão. Se o processo de trabalho for reciclado, todos os dados do estado de sessão serão perdidos. Se o seu aplicativo ASP.NET tiver de preservar dados de estado de sessão e se a velocidade de acesso aos dados não for seu principal objetivo, considere o uso de um modo de estado de sessão fora do processo, para armazenar esses dados.

Importante

O serviço de estado do Windows (Aspnet_state.exe) deve estar em execução, para que o estado de sessão em processo seja efetivado. Por padrão, esse serviço é instalado quando o Windows Server® 2012 é instalado e configurado para inicialização manual. É recomendável alterar o comportamento de inicialização para Automático.

Por padrão, a sessão expira quando o usuário não solicita nem atualiza uma página do aplicativo ASP.NET em 20 minutos. Como os Objetos da sessão consomem memória no servidor Web, considere diminuir o valor de tempo limite para conservar os recursos.

Importante: cuidado ao ajustar o valor de tempo limite da sessão, porque as informações armazenadas em um objeto de sessão do usuário são perdidas quando o usuário não está ativo no site durante o período de tempo limite.

Caso decida usar armazenamento de estado de sessão em processo, decida também se quer usar cookies. Para obter mais informações sobre os cookies, consulte e Modo de cookie para o estado de sessão.

Armazenar estado de sessão usando servidor de estado

Um servidor de estado mantém a data de estado de sessão na memória que fica fora do processo de trabalho. A vantagem dessa configuração é que estado de sessão é preservado quando o aplicativo de processo de trabalho é reciclado. O uso de um servidor de estado é recomendado para aplicativos de médio porte.

Um servidor de estado depende do serviço de estado do Windows (Aspnet_state.exe) e requer uma chave do computador para verificar o estado de sessão na conexão.

Quando um estado de servidor é executado no mesmo servidor Web que contém os aplicativos para os quais ele mantém o estado, uma configuração de ambiente Web tem suporte. Para aumentar a proteção dos dados do estado de sessão, considere o uso de uma configuração de Web farm com um servidor separado, que armazena estado de sessão e compartilhe-o entre todos os servidores na Web farm. Outra abordagem é usar o SQL Server para manter o estado de sessão fora do processo.

Importante: o serviço de estado do Windows (Aspnet_state.exe) deve estar em execução, para que o estado de sessão em processo seja efetivado. Por padrão, esse serviço é instalado quando o Windows Server 2012 é instalado e configurado para inicialização manual. Alterar o comportamento de inicialização para Automático.

Caso decida armazenar estado de sessão usando um servidor de estado, tome as seguintes decisões de design:

  • Defina uma cadeia de conexão para o servidor de estado.
  • Especifique o número de segundos a aguardar antes que a conexão atinja o tempo limite.
  • Decida se a compactação deve ser habilitada.
  • Decida se os dados de estado de sessão devem ser armazenados em um cookie. Para obter mais informações sobre os cookies, consulte e Modo de cookie para o estado de sessão.

Armazenar estado de sessão usando o SQL Server

Um tipo de estado da sessão fora do processo utiliza um servidor SQL para armazenar dados do estado da sessão. A vantagem dessa configuração é que o estado de sessão é preservado, apesar da reciclagem do processo de trabalho do aplicativo, ou se o serviço de estado do Windows ou o servidor Web ficarem inoperantes.

Observação

Essa configuração não oferece suporte ao SQL do Azure.

Quando um SQL Server é executado no mesmo servidor Web que possui os aplicativos para os quais ele mantém o estado, ele suporta uma configuração de ambiente da Web, o que aumenta a escalabilidade do servidor Web. Quando o SQL Server é executado em outro servidor, ele oferece suporte a uma configuração de Web farm, o que aumenta a escalabilidade em um grupo de servidores.

Importante

O serviço de estado do Windows (Aspnet_state.exe) deve estar em execução para que um estado de sessão fora do processo seja efetivado. Por padrão, esse serviço é instalado quando o Windows Server 2012 é instalado e configurado para inicialização manual. Alterar o comportamento de inicialização para Automático.

Importante

Antes de configurar um SQL Server para estado de sessão, execute o script InstallSqlState.sql no servidor. Por padrão, esse script é armazenado em %systemroot%\Microsoft.NET\Framework\V4.0.30319.

Caso decida armazenar estado de sessão em um banco de dados do SQL Server, tome as seguintes decisões de design:

  • Defina uma cadeia de conexão para o banco de dados.
  • Especifique o número de segundos a aguardar antes que a conexão atinja o tempo limite.
  • Especifique o número de segundos a aguardar antes de tentar reconectar.
  • Decida se um banco de dados personalizado deve ser habilitado.
  • Decida se a compactação deve ser habilitada.
  • Decida se os dados de estado de sessão devem ser armazenados em um cookie. Para obter mais informações sobre os cookies, consulte e Modo de cookie para o estado de sessão.

Um modo de acompanhar estado de sessão de clientes que se conectam a um servidor Web é usar cookies. É possível configure um servidor Web para usar cookies, não usar cookies ou selecionar comportamento de cookies, que dependem do navegador usado na conexão.

Uma sessão de cookie associa cada informação da sessão com informações do cliente da sessão. Uma sessão é a duração de uma conexão do usuário a um site. O cookie é passado em conjunto com todas as solicitações entre um cliente e um servidor Web em um cabeçalho HTTP.

O uso de cookies para acompanhar estado de sessão é mais eficiente do que qualquer outro método que não usa cookies, porque os cookies não exigem nenhum redirecionamento. Além disso, eles permitem que os usuários marquem páginas Web, e retêm o estado se um usuário sair de um site para visitar outro e depois retornar ao site original. A única desvantagem de cookies do usuário é que os usuários podem desabilitar os cookies no navegador.

O modo de cookie Usar Perfil do Dispositivo faz com que o navegador use cookies se o navegador suportar cookies, caso contrário, nenhum cookie será usado. Se o perfil do dispositivo indicar suporte para cookies, eles serão usados independentemente de o usuário ter desabilitado o suporte a cookie.

Importante

Ao usar o modo de cookie Usar Perfil do Dispositivo, defina as IDs da sessão expirada para serem geradas novamente. Isso permite que um servidor Web expire e gere novamente os tokens, que fornece a um invasor em potencial menos tempo para capturar um cookie e obter acesso ao conteúdo do servidor Web.

O modo de cookie Detecção Automática faz com que o dispositivo móvel use cookies se seu perfil suportar cookies, caso contrário, nenhum cookie será usado. Para navegadores de área de trabalho que são conhecidos por suportar cookies, o ASP.NET tenta usar cookies quando o suporte a cookies está habilitado no navegador. Se o suporte a cookie for desabilitado, o estado da sessão será armazenado no URL.

Importante

Ao usar o modo de cookie Detecção Automática, defina as IDs da sessão expirada para serem geradas novamente. Isso permite que um servidor Web expire e gere novamente os tokens, que fornece a um invasor em potencial menos tempo de capturar um cookie e obter acesso ao conteúdo do servidor Web. Considere a possibilidade de alterar o valor do tempo limite para menos do que os 20 minutos padrão.

É possível configurar o estado de sessão sem usar cookies. Ao usar um URI (Uniform Resource Identifier) para lidar com estado de sessão, a ID da sessão é integrada como uma cadeia de consulta na solicitação de URI e o URI é redirecionado para a URL solicitada originalmente. A solicitação de URI alterada é usada para a duração da sessão, de forma que nenhum cookie é necessário.

Importante

Ao usar um URI, defina as IDs da sessão expirada para serem geradas novamente. Isso permite que um servidor Web expire e gere novamente os tokens, que fornece a um invasor em potencial menos tempo de capturar um cookie e obter acesso ao conteúdo do servidor Web.

O uso de um URI para rastrear estado de sessão pode ajudar a evitar os inconvenientes dos cookies, inclusive problemas de suporte ao navegador e a possibilidade de os usuários desabilitarem os cookies. Entretanto, o uso de um URI tem as seguintes desvantagens:

  • Não é possível usar as URLs absolutas sem perder o estado de sessão, o que significa que se um usuário for para outro aplicativo e retornar ao anterior, a entrada do usuário não existirá mais na página.
  • Não permite que os usuários marquem páginas da Web, porque o estado de sessão foi perdido.

Caso decida usar cookies para armazenar estado de sessão, tome as seguintes decisões de design:

  • Selecione um modo de cookie: detecção automática, usar cookies, usar perfil de dispositivo ou usar URI.
  • A menos que você tenha selecionado a opção Usar URI, especifique o nome do cookie.
  • A menos que você tenha selecionado a opção Usar URI, especifique o número de minutos, antes que o cookie atinja o tempo limite.
  • A menos que você tenha selecionado a opção Usar cookies, decida se deseja gerar novamente uma ID de sessão expirada.

2.2. Configurações de páginas e controles

Páginas ASP.NET incluem elementos extras que o ASP.NET reconhece e processa quando a página é executada. Páginas ASP.NET também podem conter controles reutilizáveis e personalizados. Esses controles personalizados são processados no servidor. Isso permite usar o código do servidor para definir as propriedades da página da Web do ASP.NET.

Observação

Essas configurações só se aplicam a Web Forms do ASP.NET. Não se aplicam às Páginas da Web do ASP.NET ou ao MVC do ASP.NET.

O IIS 8permite configurar as seguintes configurações de controle de usuário e da página ASP.NET:

  • Configurações de comportamento: por exemplo, se a página da Web mantém seu estado de exibição e o estado de exibição de qualquer controle de servidor que ela contém quando a solicitação da página atual termina.
  • Configurações gerais: por exemplo, namespaces incluídos para todas as páginas.
  • Configurações de compilação: por exemplo, se as páginas são compiladas ou interpretadas.
  • Serviços: por exemplo, se estado de sessão é habilitado.

O IIS 8 fornece configurações padrão para páginas e controles ASP.NET, mas você pode alterar essas configurações conforme necessário. Por exemplo, defina o arquivo de página mestra para um site ou habilite o estado de exibição.

Controles personalizados da Web são componentes compilados executados no servidor e que encapsulam funcionalidades de interface do usuário e outras funcionalidades relacionadas em pacotes reutilizáveis. No IIS 8, é possível especificar o prefixo da marca e o mapeamento de namespace para um controle personalizado que pode ser usado em várias páginas em um aplicativo.

Adicione um controle personalizado quando quiser especificar mapeamento de prefixo de marca/namespace para um controle personalizado, que é usado em várias páginas em um aplicativo.

Observação

A adição de uma definição de configuração adiciona a configuração no nível local e a quaisquer níveis filhos que herdam a configuração.

Caso decida configurar controles personalizados ASP.NET, as seguintes informações serão necessárias para cada controle que quiser configurar:

  • Especifique o prefixo da marca do controle.
  • Especifique o namespace .NET do controle.
  • Especifique o assembly no qual está o controle.

2.3. Configurações do aplicativo

Defina as configurações do aplicativo quando quiser armazenar pares de chave/valor como parte da sua configuração no arquivo Web.config. As configurações do aplicativo fornecem acesso fácil e rápido aos dados de configuração armazenados do seu aplicativo.

Para gerenciar controles personalizada, exiba uma lista com todos os controles personalizados para um determinado nível de configuração. Classifique essa lista por prefixo da marca, origem ou assembly, ou escopo (local ou herdado). Também é possível agrupar os controles por escopo para visualizar quais controles personalizados aplicam-se ao nível da configuração atual e quais controles personalizados são herdados de um nível pai.

Adicione um controle personalizado quando quiser especificar mapeamento de prefixo de marca/namespace para um controle personalizado, que é usado em várias páginas em um aplicativo.

Observação

A adição de uma definição de configuração adiciona a configuração no nível local e a quaisquer níveis filhos que herdam a configuração.

Caso decida definir as configurações do aplicativo, as seguintes informações serão necessárias para cada configuração desejada:

  1. Especifique um nome para a configuração.
  2. Especifique um valor para a configuração.

2.4. Configurações de compilação do .NET

Para código do aplicativo de solicitações de serviço por usuário, o ASP.NET deve primeiro compilar o código em um ou mais assemblies. Assemblies são arquivos com a extensão de nome de arquivo .dll. Defina as configurações de compilação do .NET no IIS 8 quando quiser controlar como o código ASP.NET é compilado.

O IIS permite definir as seguintes configurações de compilação do .NET:

  • Configurações de lote, como o tamanho máximo do arquivo que você poderá colocar em lote e o número máximo de páginas que você poderá ter por compilação em lote.
  • Configurações de comportamento, como o número de vezes em que os recursos são compilados dinamicamente antes de o aplicativo ser reiniciado.
  • Configurações gerais, como a linguagem de programação padrão usada em arquivos de compilação dinâmica.

2.5. Configurações de globalização do .NET

A globalização é o processo de internacionalizar o código do aplicativo, em seguida, localizar o aplicativo para outras línguas e culturas. O processo de internacionalização torna possível converter, armazenar recuperar e apresentar conteúdo do aplicativo em qualquer localidade usando a mesma base de código de aplicativo sempre que possível. A localidade é a combinação do ambiente cultural e de idioma. Isso inclui formatos de datas, horas, moedas números de telefone e assim por diante. Localização significa adaptar o aplicativo a outros locais, traduzindo e formatando o conteúdo de acordo com a cultura, preferencialmente sem tocar no código.

Altere as configurações de globalização de aplicativos ASP.NET no nível do servidor Web, quando quiser que eles se aplicam a todos os aplicativos ASP.NET no servidor. Também é possível editar configurações de globalização do ASP.NET para sites, aplicativos, diretórios e arquivos.

O IIS permite definir as seguintes configurações de globalização:

  • Configurações de cultura, como a cultura da interface do usuário ou o idioma da interface do usuário.
  • Configurações de codificação, como codificação para cabeçalhos de resposta.

Observação

A edição de uma definição de configuração altera a configuração no nível local e em todos os níveis filhos que herdam a configuração.