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.
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.
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.
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"));
Você ganha os seguintes benefícios ao armazenar em cache seus ASP.NET View State in NCache.
NCache fornece um rico conjunto de recursos para armazenamento em cache e gerenciamento ASP.NET View State. Abaixo está uma lista deles.
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.