2009-11-22 18 views
5

Acabo de ver el PDC 2009 session de Stefan Schackow y mencionó que está sorprendido de que la gente todavía esté usando Session State en ASP.NET. Session State incluso se usa internally en ASP.NET MVC.Buiding aplicación ASP.NET sin estado de sesión?

Al haber trabajado con una aplicación heredada en la que todo está en una sesión "en proceso" (¡incluso en las tablas de datos!), He visto el abuso de sesiones de primera mano.

¿Hay alguna forma de crear una aplicación ASP.NET sin estado de sesión? ¿Cómo almacenaría información para cada paso de un flujo de trabajo de comercio electrónico típico?

Respuesta

3

No he usado una sesión en años. Si necesita rastrear el progreso de un usuario entre páginas (por ejemplo, a través de un proceso de compra), almacene la información de estado que necesite en una base de datos y vuelva a relacionarla con una cookie.

Vale la pena señalar que .NET admite diferentes mecanismos de "sesión", uno de los cuales almacena la información en una base de datos (muy preferida en mi opinión) en lugar de in-proc.

+0

¿Qué tan escalable es su solución en un entorno de mucho tráfico? ¿Será un problema de rendimiento leer/escribir el objeto de sesión de una base de datos para cada solicitud web? – Herman

+0

La respuesta corta a esa pregunta es "pruébalo y mira". sin embargo, estamos usando SQL para la gestión de sesiones en un sitio de tráfico relativamente alto y no hemos visto ningún problema de rendimiento. Recuerde que la base de datos está diseñada para este tipo de cosas, rápidas y ligeras consultas y respuestas. Me sorprendería mucho si consiguieras empantanar un servidor de base de datos decente con este enfoque. –

+0

http://odetocode.com/articles/440.aspx –

0

Consulte los perfiles de membresía de ASP.NET. Le permite serializar y almacenar/recuperar objetos por cuenta de usuario, independientemente de si el usuario es anónimo o no. Pude usar esto exitosamente con largas aplicaciones en línea tipo asistente.

+0

Debido a su naturaleza (almacenado en un campo de formulario oculto), viewstate no funciona a través de la página. –

+0

Tienes razón. No estoy seguro de lo que estaba pensando. –

+0

¿Cuidar para explicar por qué el voto a favor? Quiero decir, David Lively sugirió la misma maldita cosa después de que escribí esto y recibí un voto negativo. –

3

Tiene las siguientes opciones: cookies, base de datos, querystring, variables de página y memoria caché del servidor para tratar de manejar la naturaleza sin estado de la web. Cada uno tiene su propia compensación, pero pragmáticamente hablando, actualmente uso la sesión que se almacena en el db. Esto se adapta bien a granjas de servidores, ayuda a mantener su tamaño de página pequeño y es fácil de implementar.

Cuestiones relacionadas