ASP.NET hoy en día se usa ampliamente para aplicaciones web de alto tráfico que necesitan manejar millones de usuarios y se implementan en granjas web con equilibrio de carga. Una parte importante de ASP.NET es View State que utilizan muchas aplicaciones. ASP.NET View State es un mecanismo muy poderoso que almacena páginas, controles y valores personalizados entre múltiples solicitudes HTTP en el cliente y el servidor web.
ASP.NET View State los valores se almacenan en un campo oculto en la página y se codifican como una cadena Base64. Un ASP.NET View State Se ve como esto:
1 2 3 |
<input id="__VIEWSTATE" type="hidden" name="__VIEWSTATE" value="/wEPDwUJNzg0MDMxMDA1D2QWAmYPZBYCZg9kF…" /> |
Aunque muy útil, ASP.NET View State con frecuencia se vuelve bastante grande, especialmente en situaciones en las que su aplicación ASP.NET tiene controles de cuadrícula y muchos otros controles en las páginas. Esto se agrega a su solicitud y respuesta HTTP y eso realmente ralentiza el tiempo de respuesta de ASP.NET a niveles insoportables.
Otro inconveniente de pesado ASP.NET View State es el mayor uso de ancho de banda lo que aumenta considerablemente el costo del ancho de banda. Por ejemplo, si para cada solicitud HTTP, termina agregando 60-100k de adicionales ASP.NET View State datos, simplemente multiplíquelo por el número total de transacciones y verá rápidamente cuánto más le costará en consumo de ancho de banda.
Finalmente, en algunas situaciones, existe un riesgo de seguridad con el envío de datos confidenciales como parte de ASP.NET View State. Encriptarlo antes de enviarlo también es costoso.
Para resolver todos estos problemas, puede almacenar en caché ASP.NET View State en el servidor web y asigne un GUID como su clave en el caché. Este GUID luego se envía al navegador en un campo oculto y regresa junto con la siguiente solicitud HTTP y se usa para obtener el correspondiente ASP.NET View State del caché. Esto reduce la carga útil enviada al navegador, lo que no solo mejora el tiempo de respuesta de ASP.NET, sino que también reduce drásticamente el costo de consumo de ancho de banda.
Si su aplicación ASP.NET se ejecuta en una granja web con equilibrio de carga, debe usar una caché distribuida. Una caché independiente como ASP.NET Cache no funcionará. NCache es un caché distribuido de nivel empresarial que proporciona ASP.NET View State módulo de almacenamiento en caché. Para usarlo, no necesitas hacer ninguna programación. Simplemente modifique su ASP.NET web.config para ello.
Estos son los pasos a seguir NCache para almacenar en caché ASP.NET View State:
- Cree un archivo app.browser en su aplicación ASP.NET. Créelo en el directorio App_browsers. Conecte los adaptadores de página en el archivo app.browser de la siguiente manera:
123456<browser refID="Default"><controlAdapters><adapter controlType="System.Web.UI.Page"adapterType="Alachisoft.NCache.Adapters.PageAdapter"/></controlAdapters></browser> - Luego agregue la siguiente referencia de ensamblado en la sección de compilación del archivo 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 su sección de configuración en el archivo web.config.
12345678910<configSections><sectionGroup name="ncContentOptimization"><section name="settings"type="Alachisoft.NCache.ContentOptimization.Configurations.ContentSettings"allowLocation="true" allowDefinition="Everywhere"/></sectionGroup></configSections> - Especifique la configuración para su sección de configuración en el archivo web.config (que se registró anteriormente).
1234567891011<ncContentOptimization><settings enableMinification="true"enableViewstateCaching="true"groupedViewStateWithSessions="true"viewstateThreshold="0"enableTrace="true"><cacheSettings cacheName="mycache"><expiration type="Sliding" duration="300"/></cacheSettings></settings></ncContentOptimization> - Al final, registre el controlador HTTP en la sección HttpHandlers de web.config de la siguiente manera:
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"/>
Después de configurar NCache, puedes ver el ASP.NET View State etiquete en su aplicación 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 se agrega otra etiqueta oculta con ASP.NET View State. Contiene la clave única asignada a ASP.NET View State de su página, en su caché distribuida. Entonces, siempre que su servidor de aplicaciones necesite ASP.NET View State value puede obtenerlo fácilmente del caché.
Con esto, verá un aumento notable en el rendimiento de los tiempos de respuesta de ASP.NET y el costo de consumo de ancho de banda también se reducirá significativamente.
Por favor explore más sobre ASP.NET View State almacenamiento en caché al intentar NCache ASP.NET View State módulo usted mismo.
Puedes usar NCache para Azure para almacenar el estado de sesión de ASP.NET para las aplicaciones de Microsoft Azure ASP.NET. Aquí hay un blog que explica las opciones de almacenamiento de sesión de Microsoft Azure y por qué NCache para Azure es la mejor entre todas las opciones disponibles en Microsoft Azure.
https://20.200.20.123:86/storing-asp-net-session-state-in-a-microsoft-azure-distributed-cache/
¿Alguien que haya utilizado con éxito el almacenamiento en caché de Windows Azure (versión preliminar) para manejar el estado de la sesión?