ASP.NET View State é um mecanismo de gerenciamento de estado do lado do cliente, que é usado para salvar valores de página e controle. ASP.NET View State é um campo oculto na página como uma string Base64 codificada. Ele é enviado ao cliente como parte de cada resposta e retornado ao servidor pelo cliente como parte de um post back.
1 2 3 4 5 6 7 8 9 10 |
<input id="__VIEWSTATE" type="hidden" name="__VIEWSTATE" value="wEPDwUJNzg0MDMxMDA1D2QWAmYPZBYCZg9kFgQ CQ9kFgICBQ9kFgJmD2QWAgIBDxYCHhNQcm2aW91c0NvbnRyb2xNb2RlCymIAU1pY3 Jvc29mdC5TaGFyZVBvaW50LldlYkNvbnRyb2xzLlNQQ29udHJbE1vZGUsIE1pY3Jv 29mdC5TaGFyZVBvaW50LCBWZXJzaW9uPTEyLjAuMC4wLCBDdWx0dXJlPW5ldXRyWw sIFB1YmxpY0tleVRva2VuPTcxZTliY2UxMTFlOTQyOWMBZAIDD2QWDgIBD2QWBgUm Z19lMzI3YTQwMF83ZDA1XzRlMjJfODM3Y19kOWQ1ZTc2YmY1M2IPD2RkZAUmZ18yN DQ3NmI4YV8xY2FlXzRmYTVfOTkxNl8xYjIyZGYwNmMzZTQPZBYCZg8PZBYCHgVjbG DQWBgUmZ19lMzI3YTQwMF83ZDA1XzRlMjJfODM3Y19kOWQ1ZTc2YmY1M2IPD2...."/> |
Problemas com ASP.NET View State no Microsoft Azure
ASP.NET View State é um recurso muito importante para aplicativos implantados como funções da web/trabalhador em Cache do Microsoft Azure. Mas o estado de exibição vem com alguns problemas que você precisa entender e resolver para tirar o máximo proveito dele.
Primeiro de tudo, ASP.NET View State torna-se muito grande, especialmente quando seu aplicativo ASP.NET do Microsoft Azure tem muitos controles pesados em suas páginas. Isso resulta em carga útil de estado de exibição pesada que viaja entre o navegador e seu aplicativo em cada solicitação. A carga útil do estado de exibição pesado diminui o desempenho e também resulta em consumo de largura de banda extra, especialmente quando uma média ASP.NET View State termina em centenas de kilobytes e quando milhões dessas solicitações são processadas em seu aplicativo Microsoft Azure.
ASP.NET View State também é 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 adulterados por um invasor, o que é uma séria ameaça à segurança.
Solução para ASP.NET View State Problemas
Você pode resolver ASP.NET View State problemas em aplicativos do Microsoft Azure armazenando o real ASP.NET View State no lado do servidor em um cache distribuído e nunca o envie de volta ao navegador junto com a carga útil da solicitação.
NCache for Azure é um cache distribuído extremamente rápido e escalável para Microsoft Azure. Ele permite que você armazene ASP.NET View State em Cache Distribuído no lado do servidor e, em vez disso, enviar um pequeno token como estado de visualização para o cliente em uma carga de solicitação. Isso reduz drasticamente o tamanho da carga útil da solicitação. O token View State é então usado no lado do servidor para encontrar o ASP.NET View State in NCache para Cache Distribuído do Azure em postbacks. Uma carga útil menor resolve problemas relacionados ao desempenho e à utilização da largura de banda porque você não está mais lidando com um estado de exibição enorme em cada solicitação em seu aplicativo do Microsoft Azure. Além disso, View State armazenado no lado do servidor em NCache para o cache distribuído do Azure nunca é exposto aos clientes, portanto, aborda as preocupações de segurança mencionadas acima.
Aqui está um exemplo de um token sendo usado no lugar de ASP.NET View State de NCache para Azure ASP.NET View State fornecedor:
1 2 |
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="cf8c8d3927ad4c1a84dsadfgsdsfdsda7f891bb89185" /> |
utilização NCache para Azure ASP.NET View State Cache
- Crie um arquivo app.browser no diretório App_browsers. Conecte os adaptadores de página no arquivo app.browser da seguinte maneira:
Arquivo: App_browsersapp.browser
1 2 3 4 5 6 |
<browser refID="Default"> <controlAdapters> <adapter controlType="System.Web.UI.Page" adapterType="Alachisoft.NCache.Adapters.PageAdapter" /> </controlAdapters> </browser> |
- Adicione a seguinte referência de assembly na seção de compilação do arquivo web.config.
Arquivo: web.config
1 2 3 4 5 6 |
<compilation defaultLanguage="c#" debug="true" targetFramework="4.0"> <assemblies> <add assembly="Alachisoft.NCache.Adapters, Version=1.0.0.0, Culture=neutral, PublicKeyToken=CFF5926ED6A53769"/> </assemblies> </compilation> |
- Inscrições NCache para a seção de configuração do Azure em seu arquivo web.config.
Arquivo: web.config
1 2 3 4 5 6 7 |
<configSections> <sectionGroup name="ncContentOptimization"> <section name="settings" type="Alachisoft.NCache.ContentOptimization.Configurations.ContentSettings" allowLocation="true" allowDefinition="Everywhere"/> </sectionGroup> </configSections> |
- Especifique as configurações para sua seção de configuração no arquivo web.config (que foi registrado acima). Essas configurações controlam NCache para Azure ASP.NET View State Recursos de cache.
Arquivo: web.config
1 2 3 4 5 6 7 8 9 |
<ncContentOptimization> <settings viewstateThreshold="12" enableViewstateCaching="true" enableTrace="false" groupedViewStateWithSessions="false" <cacheSettings cacheName="myCache" maxViewStatesPerSession="3"> <expirationtype="Absolute" duration="1"/> </cacheSettings> </settings> </ncContentOptimization> |
Conclusão
NCache para Azure fornece uma opção sem alteração de código para seus aplicativos do Microsoft Azure armazenarem ASP.NET View State no lado do servidor em um Cache Distribuído. NCache para Azure ASP.NET View State O provedor otimiza o desempenho reduzindo a carga útil da solicitação e o consumo de largura de banda enquanto aborda os problemas de segurança relacionados ao estado de exibição do lado do cliente.
Baixar NCache Open Source e execute-o no Microsoft Azure.
Você está certo sobre NCache enviando a string original para ASP.NET.
No que diz respeito ao estado de exibição sem cache, deve haver algo errado com sua configuração específica para seu ambiente. Em breve, enviaremos um e-mail para você em seu endereço de e-mail registrado para coordenar e ajudá-lo ainda mais.
Hi
Configurei todas as etapas que você descreveu no artigo, mas, a string do estado de exibição não mudou e não ficou menor, a ideia principal é ncache substitua a string por sua própria string e, em seguida, ncache em tempo de execução vai passar a string original para asp.net, estou errado?
por favor, deixe-me saber, como posso obter mais informações ou se será possível obter assistência remota?
Fico feliz que tenha pensado assim.
Por padrão, NCache mantém todos os ViewStates indefinidamente no cache, independentemente do atraso do postback. Portanto, todas as solicitações de estado de exibição serão tratadas pelo cache.
Por outro lado, você também pode associar expirações de base de tempo (absolutas ou deslizantes) ao ViewState e definir o valor alto o suficiente para evitar falhas de cache mesmo após um longo tempo de retorno dos potes.
Você também pode agrupar ViewState com NCache Sessões. Dessa forma, quando uma sessão de usuário é removida do cache, todos os ViewStates relacionados são removidos automaticamente. Isso ajuda a evitar carga extra de memória no cache, proporcionando o melhor desempenho.
NCache soa bastante útil.
No caso de estado de visualização na página, a página pode ser postada de volta mesmo depois de muito tempo sem nenhum impacto.
como funciona NCache lidar com este cenário?