almacenando el estado de controles, variables, y otros, en ASP.NET

Generalmente siempre surge la duda de cuál es la mejor manera de almacenar el estado de una variable, de cierto control, o algún tipo de estado. Ya que como sabemos, las páginas ASPX son STATELESS (es decir NO GUARDAN el estado de alguna parte de la página entre postback al servidor). Entre cada pedido, los datos de la página son destruidos. -Pero cada vez que hago un postback (hacer un envío al servidor), sigo viendo lo que guarde en los controles, – es cierto.

Pues si efectivamente, puedes verlo, ya que ASP.NET tiene varias formas de implementar el almacenamiento y administración de estado entre postbacks. Y por ejemplo para almacenar el estado de los controles se usa la característica de ViewState.

En este post vamos a mostrar cada característica como resumen, cada una teniendo su ventaja/desventaja en un respectivo ambiente, en post posteriores hablaremos de alguna característica puntualmente.

Opciones de administración de estado del lado del cliente:

  • View state (Estado de vista). Utilice esta opción cuando necesite almacenar cantidades pequeñas de información de una página que se enviarán de vuelta a la misma página. Con la propiedad ViewState, se aporta seguridad básica a la funcionalidad.
  • Control state (Estado de control). Utilice esta opción cuando necesite almacenar cantidades pequeñas de información de estado de un control entre los recorridos de ida y vuelta al servidor.
  • Hidden fields (Campos ocultos). Utilice esta opción cuando necesite almacenar cantidades pequeñas de información de una página que se enviará de vuelta a la propia página o que se enviará a otra página, y cuando la seguridad no sea un problema. Nota: Sólo puede utilizar campos ocultos en páginas que se envíen al servidor.
  • Cookies. Utilice esta opción cuando necesite almacenar cantidades pequeñas de información en el cliente y la seguridad no sea un problema.
  • Query string (Cadena de consulta). Utilice esta opción cuando transfiera cantidades pequeñas de información de una página a otra y la seguridad no sea un problema. Nota: Sólo puede utilizar cadenas de consulta cuando haga una petición de la misma página o una petición de otra página a través de un vínculo.

En el caso del lado del cliente, como pueden ver predominan los casos donde no se necesite una seguridad avanzada. Ya que el cliente puede manipular estos estados, y en algunos casos puede deshabilitarlos, como el uso de Cookies.

Opciones de administración de estado del lado del servidor:

  • Application state (Estado de aplicación). Utilice esta opción cuando almacene información global que no se modifica con frecuencia y que utilizan muchos usuarios y cuando la seguridad no constituya un problema. No utilice el estado de aplicación para almacenar grandes cantidades de información.
  • Session state (Estado de sesión). Utilice esta opción cuando almacene información de corta duración que es específica de una determinada sesión y la seguridad no sea un problema. No utilice el estado de sesión para almacenar grandes cantidades de información. Tenga en cuenta que un objeto de estado de sesión se creará y se conservará durante el ciclo de vida de cada sesión de la aplicación. En aplicaciones que hospeden a muchos usuarios, esto puede ocupar un número significativo de recursos de servidor y afectar a la escalabilidad.
  • Profile properties (Propiedades de perfiles). Utilice esta opción cuando almacene información específica del usuario que debe conservarse después de que la sesión de usuarios haya caducado y que necesitará recuperar de nuevo en próximas visitas a la aplicación.
  • Database support (soporte con bases de datos). Utilice esta opción cuando almacene gran cantidad de información, administre transacciones o la información deba conservarse aunque se vuelva a iniciar la aplicación o la sesión. Suele utilizarse para la extracción de datos, y la seguridad es una cuestión importante a tener en cuenta.

En esta última lista que presenta MSDN, falta la administración de estados en archivos, que también es una posible opción. Por cierto cabe resaltar que Profiles es una de las nuevas características de ASP.NET 2.0, y se podría decir que es una Session mejorada, al tener un almacenamiento permanente, se podría decir que es una unión de Session state, y Database support.

Ahora cada opción tiene sus ventajas/desventajas, escenarios, tips, etc. Si quieren más detalles pueden visitar:

Saludos,

Post cruzado 3Dev Blogs

Un comentario sobre “almacenando el estado de controles, variables, y otros, en ASP.NET”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *