Estoy trabajando con una aplicación asp.net que almacena la mayoría de los datos en una base de datos y no la sesión. Me pregunto cuáles son los pros y los contras de cada uno y cuál es la mejor manera de hacerlo. Por ejemplo, tiene un sitio bastante ocupado y en lugar de almacenar variables específicas del usuario en sesión, hay una tabla de DB llamada datos de usuario y puede almacenar todos los datos específicos del usuario a los que se puede acceder desde cualquier página consultando la base de datos. ¿Cuál es la mejor manera de ir, sesión o base de datos?Almacenamiento de variables de usuario en la base de datos frente a la sesión en asp.net
Respuesta
Pregunta interesante. Si se trata de datos que no son importantes en todas las sesiones (por ejemplo, la última página vista) -> sesión. Si se trata de datos que deberían ser persistentes (por ejemplo, contraseña) -> base de datos. El caso interesante y el que probablemente se refiera: Datos que deberían ser persistentes pero que también se usan a menudo (por ejemplo, el nombre de usuario). A partir de esto, tiendo a copiar esos valores del DB en la sesión que me permite trabajar sin acceso a la base de datos en páginas con tareas triviales.
Cualquier cosa almacenada en estado de sesión se desvanecerá cuando se reinicie AppDomain.
Puede evitar eso usando un controlador de estado de sesión fuera de proc, pero eso no es mejor que una base de datos.
sesión (pero depende mucho de la configuración de la sesión):
- No hay acceso a la base de datos, o menos.
- Almacenamiento temporal: puede perder la información, al menos cuando finaliza la sesión.
- Quizás algún problema de seguridad, dependiendo de dónde almacene la información de la sesión
- No compartido: puede tener problemas si está usando una granja de servidores, un servidor puede no tener acceso a la otra sesión del servidor.
- Puede no funcionar si el cliente deshabilitó las cookies.
Base de datos:
- tráfico de base de datos para cada devolución de datos si necesita la información en cada página.
- Almacenamiento permanente.
- No hay información almacenada con el cliente (cookies ...).
- Compartido: datos accesibles desde cualquier servidor de una granja de servidores web.
Tenga en cuenta que puede almacenar información de sesión en la base de datos. Es por eso que uso la palabra "puede" en la parte de la sesión. Ver here some session configuration and possibilities
En muchos casos, utilizo Session
para almacenar datos temporales sobre ... bueno ... "sesión". En ASP.NET, la sesión es configurable. Puede usar in-proc
(predeterminado) que usa la memoria del servidor. También puede configurar la sesión para utilizar una base de datos o una herramienta de gestión de sesiones (en caso de que la memoria del servidor sea un problema o se mueva a un entorno de clúster/granja).
La sesión está destinada a ser temporal. Esto es genial cuando realmente está almacenando datos sobre el usuario que está utilizando su aplicación en ese momento. Cuando el usuario abandona la aplicación y su sesión expira, la memoria se libera. No tiene que borrar nada manualmente.
Session usa la memoria del servidor. Siempre que tenga suficiente memoria y no esté en un clúster de servidor, esto funciona muy bien.La memoria es rápida, por lo que obtener y establecer datos en sesión es muy rápido y utiliza un ancho de banda de red cero.
He dicho todo eso, en algunas de mis aplicaciones, tengo la sesión configurada para usar SQL. Básicamente es lo mismo que usar la base de datos directamente, pero no tengo que lidiar con DAL ... solo deje que el framework funcione para usted.
- 1. Caché de datos frente a objeto de sesión en ASP.Net
- 2. Almacenamiento de datos en memoria: sesión frente a caché frente a estático
- 3. Almacenamiento de ASP.Net MVC Views en la base de datos
- 4. Almacenamiento de la sesión de Asp.net
- 5. PHP - Almacenamiento de sesión en una base de datos
- 6. variables de sesión de asp.net en Session_End
- 7. ASP.NET MVC4 WebSecurity - Ubicación de almacenamiento de base de datos
- 8. Cifrado de datos para almacenamiento en la base de datos
- 9. variables de sesión timeout en la aplicación asp.net
- 10. Almacenamiento de información de OpenID en la base de datos
- 11. Almacenamiento aislado frente a la carpeta de datos de aplicación
- 12. Almacenamiento en caché de los datos de usuario para evitar viajes de base de datos excesivos
- 13. ¿Cuáles son las ventajas y desventajas de almacenar datos de sesión en el archivo frente a la base de datos?
- 14. Rieles: almacenamiento de datos cifrados en la base de datos
- 15. Almacenamiento de datos XML en la base de datos: muchas tablas frente a volcar xml en una columna
- 16. Variables de sesión de ASP a ASP.NET
- 17. PHP - Almacenamiento de texto en la base de datos MySQL
- 18. Hackeando variables de sesión en Asp.NET
- 19. establecer la sesión en la base de datos en php
- 20. Sesión de ASP.NET: objeto grande frente a muchos objetos pequeños
- 21. diseño de base de datos: flexibilidad frente a la simplicidad
- 22. almacenamiento de datos en un usuario "anónimo"
- 23. ASP.NET - Almacenamiento de clases en variables de sesión - ¿Cómo funciona (memoria)?
- 24. Rieles: almacenamiento de archivos binarios en la base de datos
- 25. Almacenamiento de matrices en la base de datos utilizando ActiveRecord
- 26. Drools: reglas de almacenamiento en la base de datos
- 27. Rieles: almacenamiento de plantillas erb en la base de datos
- 28. Almacenamiento de entradas en la base de datos MySQL
- 29. ASP.Net MVC Menú basado en la base de datos con almacenamiento en caché
- 30. Datos predeterminados de almacenamiento de la base de datos local