aumentar - ¿Cuál es mejor, InProc o SQL Server, para el modo de estado de sesión en asp.net?
iis session timeout (4)
Estoy desarrollando un sitio web ASP.NET. Quiero saber cuál es mejor en el modo de estado de sesión: ¿InProc o SQL Server? Necesito escuchar sus experiencias sobre este tema.
Otra pregunta es sobre el atributo sin cookies. ¿Hay algún agujero de seguridad en mi sitio si lo configuro en verdadero? En todas las muestras que vi en el sitio de MSDN, este atributo se estableció en falso.
Y la última pregunta es sobre el atributo Timeout. ¿Este atributo afecta la duración de mis sesiones cuando lo configuro en modo InProc?
Mejor en cuanto a qué?
La sesión de InProc es mucho más rápida, tiene menos requisitos (serialización), pero no se puede utilizar cuando está ejecutando su aplicación en varios servidores web;
La sesión de SQL es mucho más lenta, tiene requisitos de serialización de objetos, pero puede compartirse entre varios servidores web;
Esa es la principal diferencia entre ellos que los desarrolladores deberían preocuparse principalmente.
Sesión sin cookies
Debería hacer una pregunta por separado con respecto a esto, porque es una pregunta completamente no relacionada con la anterior.
Si desactiva el manejo de ID de sesión de cookies, podrá ver el ID de sesión. Pero usted también puede hacerlo si revisa las cookies. El número está ahí.
Y la expiración de la cookie de sesión está configurada para la sesión del navegador, por lo que es prácticamente la misma en términos de persistencia.
Las sesiones se pueden secuestrar si conoce el ID de sesión de la otra parte. Por supuesto, es más fácil si usa sesiones sin cookies porque todo lo que tiene que hacer es cambiar la URL ...
Y hay otra cosa con copiar URLs y compartir / guardar (Favoritos). Supongo que no tengo que explicar el problema.
Las sesiones sin cookies son false
de forma predeterminada porque la gran mayoría de los navegadores son compatibles con las cookies. Solo debe activarlo cuando sepa que sus clientes no tendrán cookies.
Hora de término de la sesión
El tiempo de espera de la sesión siempre está relacionado con la caducidad de la sesión, independientemente del tipo de sesión. Pero debe tener en cuenta que el estado de la sesión SQL puede no obedecer a esta configuración cuando utiliza las ediciones de SQL Express porque necesita el servicio del Agente SQL Server para descartar las sesiones caducadas. Puede mitigar este problema escribiendo su propio Servicio de Windows que descarta las sesiones caducadas.
Puedes usar Session de 3 maneras. Cada uno tiene ventajas y desventajas.
In-Proc:
- Inproc sesión es más rápida.
- Puedes añadir objetos sin ser serialización.
- Pero limitado a un servidor, si su aplicación se ejecutará en más de un servidor. Esto no funcionará para ti
- Si algo sucede, Application Pool perderá toda la información de su sesión.
Estado de la sesión:
- Funcionará como servicio de windows
- Si su aplicación se ejecuta en varios servidores, esto ayudará
- Los objetos agregados a la sesión deben ser serializados
Servidor SQL:
- Utiliza el servidor SQL, pero también hay implementación de Oracle
- Más lento que el servidor de estado
- Mucho mas confiable
También revise esta pregunta: SQLServer vs StateServer para el rendimiento de estado de sesión de ASP.NET
Sesión SQL es mejor opción que sesión en proceso.
Estado de sesión InProc
El modo de sesión InProc indica que el estado de la sesión se almacena localmente, significa que con el modo de estado de la sesión InProc es almacenar objetos en el dominio de aplicación de la aplicación web. Debido a esto, el estado de la sesión se pierde cuando se reinicia IIS (Sistema de información de Internet).
En general, el dominio de aplicación se reinicia en función de varios factores, como la configuración del atributo memoryLimit en la sección del archivo de configuración, la modificación de Global.asax o el archivo Web.config, etc.
Podemos usar el modo de estado de sesión de StateServer o SqlServer para superar estos problemas y aquí el estado de la sesión no se almacena en el dominio de aplicación de la aplicación web.
Estado de la sesión de OutProc
En la sesión de OutProc, el estado de Sessin se almacena en los modos StateServer y SqlServer y no en el dominio de aplicación de la aplicación web.
StateServer: utiliza un servicio independiente de Microsoft Windows para almacenar la variable de sesión, por lo que este servicio es independiente de IIS, se puede ejecutar en un servidor separado. Puede usar este modo para una solución de equilibrio de carga porque varios servidores web pueden compartir variables de sesión. Aunque las variables de sesión no se pierden si reinicia IIS, el rendimiento se ve afectado al cruzar los límites del proceso.
SqlServer: el modo SqlServer también le permite utilizar un almacén de estado que se encuentra fuera del proceso de IIS y que se puede ubicar en la computadora local o en un servidor remoto. Para la persistencia de la información de sesión, puede usar el modo SqlServer. El modo SqlServer es similar al modo fuera de proceso, excepto que los datos de la sesión se mantienen en un servidor SQL.