Ir al contenido principal

Como escoger entre ViewState, Session, Cache y Cookies

Problemas con Aplicaciones Web
Las aplicaciones web son sin estado, lo que significa que una vez una página web es enviada desde servidor, nada permanece en el servidor y la próxima vez que el usuario actualiza la página, esta página será creada desde cero.


ASP.NET proporciona las siguientes soluciones para resolver este problema:
1- El ViewState.
2- Las variables de sesión.
3- Las variables de aplicación.
4- La memoria caché.
5- Las cookies.



Ahora surge la pregunta: ¿cuándo utilizar qué?


1- El ViewState.El ViewState es un campo oculto en una página ASP.NET, y contiene el estado de esos controles en una página cuya propiedad "EnableViewState" es "true".
También puede agregar explícitamente los valores en ella, como el siguiente ejemplo:


Viewstate.Add ("YearOrders", "5887");



El ViewState se debe utilizar cuando se quiere pasar un valor entre diferentes peticiones al servidor de una sola página y sus valores no son accesibles en cualquier otra página.
Debido Viewstate se renderiza con la página, consume ancho de banda, así que ten cuidado al utilizarlo en aplicaciones que corran con un bajo ancho de banda.



2- Las variables de session.
Las variables de sesión son las más utilizadas.
Cuando un usuario visita un sitio, se inicia la sesión y cuando el usuario permanece  un tiempo inactivo o deja el sitio, finaliza la sesión.
Las variables de sesión se deben utilizar para guardar y recuperar información específica del usuario y que se comparte entre varias páginas.
Las variables de sesión consumen la memoria del servidor, así que si servidor tiene una enorme cantidad de visitantes, utilice la sesión con mucho cuidado y en lugar de usarlas, hay que tratar de usar IDs y referencias.



3- Las variables de aplicación.
Las variables de aplicación son las variables compartidas entre todos los usuarios de una aplicación web.
Las variables de aplicación se comportan como variables estáticas y son sustituyen a las variables estáticas en aplicaciones web.
Sólo los valores compartidos deben usarse en variables de aplicación, y en cuanto no estén en uso deben ser eliminados de forma explícita.



4- La memoria cache.
Caché es probablemente la característica de estado menos usada de ASP.NET.
Caché es básicamente una función de persistencia de estado, significa que a diferencia de la sesión está ligada a los recursos en vez de los usuarios, por ejemplo: páginas, controles, etc.
La caché se debe utilizar en páginas, controles y estructuras de datos usados muy frecuentemente.
La caché de datos se puede utilizar para almacenar en caché la lista de valores usados con mucha frecuencia, por ejemplo la lista de productos.



5- Las cookies.
Las cookies son valores guardados en los navegadores para un sitio web en particular o de acceso público.
El propósito de las cookies es ayudar a los sitios web para identificar a los visitantes y recuperar sus preferencias guardadas.
Las cookies también se utilizan para facilitar el auto login manteniendo el identificador de usuario en una cookie.
Debido a que las cookies se guardan en el lado del cliente, no crean problemas de rendimiento, pero pueden crear problemas de seguridad, ya que pueden ser hackeado desde el navegador



Por último recordar los siguientes puntos:
1- ViewState consume ancho de banda.
2- Las variables de sesión consumen memoria dependiendo del número de usuarios.
3- Las variables de Aplicación son compartidas por los usuarios.
4- La caché consume memoria dependiendo de los recursos usados.
5- Las cookies son las más inseguras.



Referencia: https://devshop.wordpress.com/2008/04/10/how-to-choose-from-viewstate-sessionstate-cookies-and-cache/

Comentarios

Entradas más populares de este blog

Eliminar registros repetidos de una DataTable

A continuación les muestro un ejemplo de como eliminar los registros repetidos de una DataTable . //DataTable con los reqistros repetidos (myRepeatedData) //Filtramos los registros únicos en la variable var. var uniqueRows = myRepeatedData.AsEnumerable().Distinct(DataRowComparer.Default); //Lo copiamos a otra DataTable DataTable myUniqueData = uniqueRows.CopyToDataTable(); Con esto tendremos en la DataTable myUniqueData los registros únicos.

Obtener el valor de un control ASPxSpinEdit dentro de un ASPxGridView

Para obtener el valor de un control ASPxSpinEdit dentro de un ASPxGridView -Agregar un control ASPxSpinEdit dentro del DataItem Template -Hacer que se muestren los datos de la fuente poniendo en el atributo value la expressión siguiente: ' <%# Bind("GroupCode") %> '  donde GroupCode es el nombre de la columna en la fuente de datos. -Hacer que el evento ValueChanged se procese en el servidor agregando lo siguiente en los eventos del cliente:   <ClientSideEvents ValueChanged="function(s, e) {  e.processOnServer = true; }" /> El markup completo de la columna quedaría así: <dx:GridViewDataTextColumn Caption="Grupo" FieldName="GroupCode" ShowInCustomizationForm="True" VisibleIndex="4">    <PropertiesTextEdit DisplayFormatInEditMode="True" DisplayFormatString="g">    </PropertiesTextEdit>    <DataItemTemplate>       <dx:ASPxSpinEdit ID="spinEdi...

Mostrar un Loading Panel al cargar y al procesar los datos que consuman mucho tiempo de proceso

Primero hay que crear el Panel como en el siguiente ejemplo: <dx:ASPxLoadingPanel ID="loadingPanel" ClientInstanceName="loadingPanel" runat="server" Modal="true"         Width="70%" Height="30px" Text="Se está procesando su petición; por favor no abandone la sesión porque podría tener inconsistencia en sus datos..." >     </dx:ASPxLoadingPanel> Crear una función con Javascript que muestre el panel :  function showLoadingPanel() {         loadingPanel.Show();     } Si se desea que solo muestre el panel encima de un control como el ASPxGridview se puede usar el método ShowInElementByID del Panel: function showLoadingPanel() {         loadingPanel.ShowInElementByID(grvHarnessItems.name);     } Crear una función con Javascript que esconda el panel:   function OnControlsInitialized(s, e) {         setTimeout(function () {   ...