Exibir cache de estado para otimização de desempenho do ASP.NET

ASP.NET View State é um recurso poderoso do ASP.NET que fornece um mecanismo de gerenciamento de estado do lado do cliente. Ele ajuda a preservar a página e os valores de controle entre viagens de ida e volta completas para solicitações de clientes. Isso fornece uma capacidade de programação completa de estado em um protocolo sem estado, como HTTP.

ASP.NET View State é armazenado em um campo oculto na página como uma string Base64 codificada, como parte de cada resposta enviada ao cliente, e também é retornada ao servidor pelo cliente como parte de um post back.

<input id = "__VIEWSTATE"
       type = "hidden"
       name = "__VIEWSTATE"
       value = "/wEPDwUJNzg0MDMxMDA1D2QWAmYPZBYCZg9kFgQCAQ9kFgICBQ9kFgJmD2QWAgIBD
              xYCHhNQcm2aW91c0NvbnRyb2xNb2RlCymIAU1pY3Jvc29mdC5TaGFyZVBvaW50Lld
              lYkNvbnRyb2xzLlNQQ29udHJbE1vZDA1XzRlMjJfODM3Y19kOWQ1ZTc2YmY1M2IPD
              2…=="/>

Embora muito útil, ASP.NET View State vem com alguns problemas que você precisa entender e resolver. Eles são discutidos abaixo.

  1. ASP.NET View State é muitas vezes pesado: Quando seu aplicativo ASP.NET tem muitos controles e widgets ricos e pesados ​​em suas páginas, muitos dados estão indo e voltando entre o navegador e o servidor web. Essa carga útil pesada resulta em degradação de desempenho do aplicativo ASP.NET e alto custo de largura de banda.
  2. ASP.NET View State é um risco de segurança: Também pode representar um risco de segurança ao enviar dados confidenciais como parte do estado de exibição para o cliente. Esses dados são vulneráveis ​​a ataques e podem ser controlados por um invasor, que é uma séria ameaça à segurança. Você pode criptografar o ASP.NET View State dados, mas isso novamente terá um custo de desempenho.

NCache para ASP.NET View State

Uma maneira que você pode resolver ASP.NET View State problemas é armazenando o real ASP.NET View State no servidor Web e enviando um token exclusivo (ou ID) no lugar dele para o navegador para que o navegador possa enviar esse token de volta ao servidor Web na próxima vez. O servidor da Web usa esse token para encontrar o ASP.NET View State em sua loja. Abaixo está um exemplo de um token sendo usado no lugar de ASP.NET View State.

<input type = "hidden"
       name = "__VIEWSTATE"
       id = "__VIEWSTATE"
       value = "vs:cf8c8d3927ad4c1a84da7f891bb89185" />

Apesar ASP.NET View State pode ser armazenado no servidor web, não é ideal quando seu aplicativo ASP.NET está sendo executado em um web farm com balanceamento de carga, pois a próxima solicitação HTTP pode chegar a outro servidor web. Portanto, você deve armazenar o ASP.NET View State em um armazenamento compartilhado que pode ser acessado de todos os servidores da web.

O melhor lugar para armazenar ASP.NET View State no servidor está em um cache distribuído. Desta forma, você não só pode ter uma loja comum para todos os servidores web, mas também tem uma armazenamento na memória rápido e escalável em comparação com o banco de dados SQL Server ou outras opções de armazenamento.

Armazenamento em cache distribuído ASP.NET View State - NCache
Figura 1: armazenamento de cache distribuído ASP.NET View State

NCache é um cache distribuído extremamente rápido e escalável para .NET/.NET Core, Java e Node.js. Também permite armazenar ASP.NET View State para resolver os problemas descritos acima.

Configurar o ASP.NET ViewState em NCache

Para configurar ASP.NET View State você precisa instalar o AspNet.ViewState.NCache Pacote NuGet como pré-requisito. Então você precisa configurar o arquivo App_browser com NCache Conecte adaptadores de página e configurar o arquivo web.config em seu aplicativo para registrar a seção de configuração para View State e especificar as configurações para a seção de configuração registrada. Consulte o NCache ASP.NET View State docs para configuração passo a passo.

Se o mesmo cache estiver sendo usado para cache do View State e outros dados, você poderá buscar os dados do estado de visualização usando NC_ASP.net_viewstate_data marcar como:

Hashtable allViewStateData = cache.GetByTag(new Tag("NC_ASP.net_viewstate_data"));

Benefícios do cache ASP.NET View State no servidor

Você ganha os seguintes benefícios ao armazenar em cache seus ASP.NET View State in NCache.

  1. Melhore o desempenho do ASP.NET: NCache reduz a carga útil de solicitação/resposta, o que melhora o tempo geral de solicitação.
  2. Reduza o custo de largura de banda: Uma carga útil menor também significa uma redução significativa no custo de consumo de largura de banda. Isso pode economizar muito dinheiro.
  3. Segurança: Agora que ASP.NET View State string codificada não é enviada ao navegador, não há mais riscos de segurança.
  4. Rápido e escalável ASP.NET View State Armazenamento: NCache é um cache distribuído extremamente rápido e escalonável. Isso significa que seu ASP.NET nunca enfrenta gargalos de escalabilidade devido a ASP.NET View State armazenamento.
  5. ASP.NET View State Confiabilidade por meio da replicação: NCache replica todos os dados no cache distribuído de forma inteligente. Isso significa que você não perde nenhum ASP.NET View State mesmo que um servidor de cache fique inativo.

Avançado ASP.NET View State Recursos de cache em NCache

NCache fornece um rico conjunto de recursos para armazenamento em cache e gerenciamento ASP.NET View State. Abaixo está uma lista deles.

  1. Limite de tamanho mínimo: NCache permite que você especificar um tamanho mínimo de ASP.NET View State. Qualquer estado de exibição menor que esse não é armazenado em cache. Isso permite que você armazene em cache apenas o estado de visualização pesado.
  2. Ligação ASP.NET View State com estado de sessão: Você pode vincular um ASP.NET View State com seu estado de sessão. Dessa forma, quando a sessão do usuário expirar, todos os seus estados de visualização serão automaticamente removidos do cache.
  3. Limite de contagem máxima no nível da página: Você pode configurar quantos estados de visualização devem ser mantidos para uma determinada página de maneira FIFO. Desta forma, o estado de visualização mais antigo é removido sempre que um novo estado de visualização é criado para esta página. Isso otimiza o consumo de memória no servidor de cache ao não armazenar em cache os estados de exibição que você nunca precisaria.
  4. Limite de contagem máxima no nível da sessão: Semelhante ao nível da página, você pode especificar a contagem máxima de estado de visualização para uma sessão de usuário de forma FIFO com maxViewStatesPerSession. Desta forma, o estado de visualização mais antigo é removido sempre que um novo estado de visualização é criado.
  5. Configurações de nível de página e de sessão: Você pode especificar todas as configurações acima de forma diferente para cada página ou mantê-las comuns a todas as sessões.

Resumo

Como você viu, NCache permite armazenar em cache ASP.NET View State no servidor para otimizar o desempenho do ASP.NET. Adicionalmente, NCache fornece um rico conjunto de recursos para gerenciar seus ASP.NET View State mais eficientemente no cache. Isso permite desenvolver aplicativos complexos e usar esses recursos para lidar com uma variedade de cenários.

O que fazer a seguir?

© Copyright Alachisoft 2002 - . Todos os direitos reservados. NCache é uma marca registrada da Diyatech Corp.