ASP.NET: Almacenamiento del estado de la sesión (Session State Mode)
El otro día un compañero me comentó:
Luis, estamos desarrollando una aplicación Web y como Session State Mode estamos utilizando InProc, pero no sabemos sí esta va a ser la configuración final. ¿Que debemos tener en cuenta en el desarrollo para que esta modificación no nos afecte?
A lo que le respondí:
¿Sabes cual es la diferencia entre los distintos Session State Mode?
El respondió:
No muy bien, te importaría explicarmelo.
ASP.NET soporta 5 tipos diferentes para el almacenamiento de la sesión:
- InProc: Es el modo por defecto. El estado de la sesión se almacena en la memeria del servidor web y es el que ofrece mejor rendimiento, pero como desventajas se pueden destacar que no se persiste si reinicias la aplicación web o a traves varios servidores(Web Farm).
- State Server: El estado de la sesión se almacena en un servicio llamado ASP.NET State Service y el estado de la sesión persiste aunque reinicies la aplicación o a traves de varios servidores (Web Farm) pero ofrece menor rendimiento que el modo InProc
- SQL Server: El estado de la sesión se almacena en una base de datos de SQL Server. En las mismas condiciones de Hardware, ofrece menor rendimiento que State Server pero ofrece una mejor integridad de los datos y reporting.
- Custom: Permite especificar tu propio proveedor de almacenamiento de la sesión, eso sí, necesitas implentarlo tú.
- Off: Deshabilitar el estado de la sesión. Si en tu aplicativo no usas sesión, deshabilitalo para un mejor rendimiento.
Ahora me queda más claro, pero no has respondido a mi pregunta, ¿En que me afecta al desarrollo una u otra?
Pues la suerte que tenemos los desarrolladores es que es transparente en nuestro desarrollo que una vez puesta en producción un adminsitrador o nosotros mismos modifiquemos el Session State Mode, eso sí, siempre y cuando no lo deshabilitemos, porque no podremos utilizar variables de sesión y eso si nos condicionará el desarrollo.
¿Y que pasa si se deshabilita y en mi aplicación estoy trabajando con variables de Sesión?
Pues que ASP.NET cantará:
Sólo puede utilizar el estado de sesión cuando enableSessionState está establecido como true, en un archivo de configuración o en la directiva de la página
Muchas gracias Luis
Espero que os haya servido como a mi amigo ;)
Salu2