O ASP.NET hoje é amplamente usado para aplicativos da Web de alto tráfego que precisam lidar com milhões de usuários e são implantados em farms da Web com balanceamento de carga. Uma parte importante do ASP.NET é o estado de exibição que muitos aplicativos usam. ASP.NET View State é um mecanismo muito poderoso que armazena páginas, controles e valores personalizados entre várias solicitações HTTP no cliente e no servidor web.
ASP.NET View State os valores são armazenados em um campo oculto na página e codificados como uma string Base64. A ASP.NET View State se parece com isso:
1 2 3 |
<input id="__VIEWSTATE" type="hidden" name="__VIEWSTATE" value="/wEPDwUJNzg0MDMxMDA1D2QWAmYPZBYCZg9kF…" /> |
Embora muito útil, ASP.NET View State freqüentemente se torna muito grande, especialmente em situações em que seu aplicativo ASP.NET possui controles de grade e muitos outros controles nas páginas. Isso é adicionado à sua solicitação e resposta HTTP e isso realmente diminui o tempo de resposta do ASP.NET para níveis insuportáveis.
Outra desvantagem do peso ASP.NET View State é o aumento do uso da largura de banda que aumenta consideravelmente o custo da largura de banda. Por exemplo, se para cada solicitação HTTP, você acaba anexando 60-100k de ASP.NET View State dados, basta multiplicá-los pelo número total de transações e você verá rapidamente quanto custará a mais em consumo de largura de banda.
Finalmente, em algumas situações, há um risco de segurança com o envio de dados confidenciais como parte de ASP.NET View State. Criptografá-lo antes de enviar também é caro.
Para resolver todos esses problemas, você pode armazenar em cache ASP.NET View State no servidor web e atribua um GUID como sua chave no cache. Este GUID é então enviado para o navegador em um campo oculto e retorna junto com a próxima solicitação HTTP e é usado para buscar o correspondente ASP.NET View State da cache. Isso reduz a carga útil enviada ao navegador, o que não apenas melhora o tempo de resposta do ASP.NET, mas também reduz drasticamente o custo de consumo de largura de banda.
Se seu aplicativo ASP.NET estiver sendo executado em um web farm com balanceamento de carga, você deverá usar um cache distribuído. Um cache autônomo como o ASP.NET Cache não funcionará. NCache é um cache distribuído de nível empresarial que fornece ASP.NET View State módulo de cache. Para usá-lo, você não precisa fazer nenhuma programação. Basta modificar seu web.config ASP.NET para ele.
Aqui estão as etapas para usar NCache para cache ASP.NET View State:
- Crie um arquivo app.browser em seu aplicativo ASP.NET. Crie-o no diretório App_browsers. Conecte os adaptadores de página no arquivo app.browser da seguinte forma:
123456<browser refID="Default"><controlAdapters><adapter controlType="System.Web.UI.Page"adapterType="Alachisoft.NCache.Adapters.PageAdapter"/></controlAdapters></browser> - Em seguida, adicione a seguinte referência de assembly na seção de compilação do arquivo web.config.
1234567<compilation defaultLanguage="C#" debug="true"><assemblies><add assembly="Alachisoft.NCache.Adapters,Version=1.0.0.0,Culture=neutral,PublicKeyToken=cff5926ed6a53769"/></assemblies></compilation> - Registre sua seção de configuração no arquivo web.config.
12345678910<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).
1234567891011<ncContentOptimization><settings enableMinification="true"enableViewstateCaching="true"groupedViewStateWithSessions="true"viewstateThreshold="0"enableTrace="true"><cacheSettings cacheName="mycache"><expiration type="Sliding" duration="300"/></cacheSettings></settings></ncContentOptimization> - No final, registre o manipulador HTTP na seção HttpHandlers do web.config da seguinte forma:
1234567<add verb="GET,HEAD" path="NCResource.axd"validate="false"type="Alachisoft.NCache.Adapters.ContentOptimization.ResourceHandler,Alachisoft.NCache.Adapters, Version=1.0.0.0,Culture=neutral,PublicKeyToken=cff5926ed6a53769"/>
Depois de configurar NCache, você pode ver o ASP.NET View State tag em seu aplicativo como:
1 2 3 4 5 6 7 |
< input type="hidden" name="__NCPVIEWSTATE" id="__NCPVIEWSTATE" value="vs:cf8c8d3927ad4c1a84da7f891bb89185" /> < input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="" /> |
Observe que outra tag oculta é adicionada com ASP.NET View State. Ele contém a chave exclusiva atribuída a ASP.NET View State da sua página, em seu cache distribuído. Assim, sempre que seu servidor de aplicativos precisar ASP.NET View State valor, ele pode obtê-lo facilmente do cache.
Com isso, você verá um notável aumento de desempenho em seus tempos de resposta ASP.NET e seu custo de consumo de largura de banda também será reduzido significativamente.
Por favor, explore mais sobre ASP.NET View State cache tentando NCache ASP.NET View State módulo você mesmo.
Você pode usar NCache para Azure para armazenar o estado de sessão do ASP.NET para aplicativos ASP.NET do Microsoft Azure. Aqui está um blog que explica as opções de armazenamento de sessão do Microsoft Azure e por que NCache para Azure é a melhor entre todas as opções disponíveis no Microsoft Azure.
https://20.200.20.123:86/storing-asp-net-session-state-in-a-microsoft-azure-distributed-cache/
Alguém usando com sucesso o Windows Azure Caching (Preview) para lidar com o estado da sessão?