Tenga en cuenta que esta es la versión antigua 1.0 del Proveedor de Sesiones. Consulte aquí para un post sobre la nueva y mejorada versión 2.0.
Una pregunta que suelo hacer a los desarrolladores en una entrevista telefónica para un puesto de desarrollador ASP.NET es hablar de las distintas opciones para gestionar el estado de sesión en una aplicación ASP.NET. Me gusta esta pregunta porque me da una idea rápida de en qué tipos de aplicaciones ha estado trabajando ese desarrollador y qué papel ha desempeñado en su equipo.
La parte de memorización de la pregunta es claramente conocer los diferentes proveedores out-of-the-box. Los desarrolladores que trabajan en sitios más pequeños o que no tienen un papel de apoyo a la producción a menudo saben sobre el estado de sesión en proceso, pero no están familiarizados con los proveedores fuera de proceso y los problemas que resuelven.
A lo largo de los años, he comprobado que un servidor estatal era a menudo suficiente para un sitio con un tráfico razonablemente alto. Pero eso tiene un único, y obvio, punto de fallo. Gestionar el estado de la sesión con SQL Server es duradero, pero está claro que va a ser más lento. Nunca me he sentido cómodo con el aumento de E/S de disco en el servidor de base de datos para la gestión de sesiones.
La respuesta correcta parece ser usar un almacén de respaldo que no esté ligado a la E/S y que no dependa del tiempo de actividad de un único servidor. Esta descripción es aplicable a Couchbase Server. Así que si quieres la velocidad de usar un servidor de estado de sesión en memoria con la durabilidad de una instancia de SQL Server, ahora tienes la opción de usar el proveedor de estado de sesión ASP.NET de Couchbase.
Recién publicado en CouchbaseLabs proyectos en GitHub, es un puerto de la antigua Enyim Memcached proveedor de estados de sesión. También se incluye una aplicación de ejemplo para ponerla en marcha rápidamente.
Usar el nuevo proveedor es muy sencillo. Asumiendo que tienes tu cluster configurado, todo lo que necesitas hacer es actualizar tu web.config con los ajustes para la librería Couchbase .NET Client Library y actualizar la sección sessionState config.
<couchbase>
<servidores cubo="por defecto" bucketPassword=“”>
<añadir uri="http://127.0.0.1:8091/pools/default"/>
>
>
<proveedores>
<añadir nombre="Couchbase" tipo="Couchbase.AspNet.SessionState.CouchbaseSessionStateProvider, Couchbase.AspNet" />
>
>
Una vez realizados estos ajustes, basta con utilizar el objeto Session (o ViewData, ViewBag y TempData en MVC) como siempre.
No olvides que necesitarás marcar tus propias clases como Serializable para poder persistirlas en Couchbase Server.
[Serializable]
público clase SesiónUsuario
{
público cadena Nombre de usuario { consiga; configure; }
público cadena Correo electrónico { consiga; configure; }
}
Ten en cuenta que este proveedor se incluye como parte de Couchbase Labs y no es un producto con soporte oficial. Eres libre de usar el código como quieras ya que está licenciado bajo Apache License 2.0.
¡Buen post! Mantener el proceso de estado de sesión en ASP f o ASP NET programadores es muy esencial y para ello tienen que mantener ciertos puntos en mente mientras se trabaja en cualquier proyecto o módulo o aplicación.
¿Es esto compatible con Couchbase 2.0 o debemos esperar una actualización para esto también?
No hay nada rompedor en la API que no permita trabajar con el servidor 2.0, sin embargo el proyecto SessionStateProvider tendrá que ser actualizado para usar el cliente .NET 1.2 cuando lo construyas. Intentaré sacar un paquete NuGet actualizado pronto...
¡Más 1 Voto para tener el proveedor de estado de sesión actualizado en NuGet! Muchas gracias.
¿Se ha probado Couchbase ASP.NET SessionState Provider con Couchbase 2.0 Server?
En este momento, no ha sido actualizado para 2.0. Eso no quiere decir que no funcione con la 2.0, pero personalmente no lo he probado con la 2.0. Sin embargo, intentaré hacerlo en un futuro próximo...
¿Podemos establecer el tiempo de espera de sesión para couchbase menos de 500 minutos en el Web.config? Porque yo estaba configurado el tiempo de espera de sesión a 60 minutos, pero no estaba funcionando y cuando lo puse a 500 minutos o nada, entonces está trabajando absolutamente bien. No he encontrado ninguna razón detrás de él.
¿Está relacionado con la gestión de clústeres en la nube o con otra cosa?
En Web.config,
<sessionstate customprovider=\”Couchbase\” mode=\”Custom\” timeout=\”60\”>
<providers>
<add name=\”Couchbase\” type=\”Couchbase.AspNet.SessionState.CouchbaseSessionStateProvider, Couchbase.AspNet\”/>
</providers>
</sessionstate>
¿Podría describir lo que quiere decir con "no funciona"? ¿Ha visto errores?
Hola John - ¿has hecho alguna prueba de rendimiento sobre esto para ASP Session State vs SQL Server State vs Couchbase State?
¿alguien ha probado esto con couchbase 2.0 - parece un proyecto muy interesante?
He oído hablar de su uso con 2.0, pero no ha habido ninguna actualización recientemente. Couchbase Server 2.0 y 2.1 son compatibles con todo lo que funcionaba con 1.8.
Hola Matt
Sí, he hecho una prueba con 2+ y funciona bien, un gran material, amigo.
He decidido intentarlo, pero no consigo cargar el ensamblado. Está en el GAC de mi servidor Windows 2k8 con IIS7 (.NET 4.5), sin embargo IIS todavía me da "No se pudo cargar el archivo o ensamblado". Hay una entrada add assembly en el web.config global para la versión exacta del framework que utiliza mi aplicación. He verificado con gacutil que realmente está en el gac.
Además, no hay ningún tipo de instrucciones de instalación, ni aquí ni en github. ¿No debería incluirse información tan básica en el archivo Léame?
Usando esto con éxito con couchbase 2.1.1 Enterprise.
He utilizado el proyecto de ejemplo ASP.NET MVC para realizar una prueba de carga. Mi test de carga consiste en realizar un POST de login, y luego cargar la página de inicio usando la sesión. He descubierto que el proveedor de estado de sesión de Couchbase es 4 veces más lento que el proveedor de sesión de SQL Server. Cuando utilizo un Cluster Couchbase de 2 nodos, con 4 vCPU, 8GB RAM cada uno, un bucket memcached, soy capaz de generar sólo unos 80 TPS. ¡SQL Server me da más de 200 TPS! A continuación, he utilizado un solo nodo para ver si la replicación multi-nodo es traerlo abajo o no. Obtuve apenas 57 TPS. Puedo ver en el panel de couchbase, que está haciendo 531 ops / seg. Por lo tanto, casi 10 veces el ops en comparación con el golpe de página ASP.NET.
Couchbase
http://imgur.com/oF9Miwz
Servidor SQL
http://imgur.com/hhRIqiN
@oazabir:disqus-
Esos números parecen muy bajos para Couchbase en general, así que no estoy seguro de qué es exactamente lo que está fallando aquí. Estamos trabajando en algunas mejoras y pronto tendremos una nueva versión del proveedor que puede solucionar algunas de las diferencias que has encontrado.
Por curiosidad, ¿con qué versión del proveedor, SDK y Couchbase estás probando? Tu clúster está alojado en las instalaciones o en la nube?
Gracias,
Jeff
Gracias Jeff por responder. He descargado la versión 4.0 de Couchbase y el último SDK hace 4 días. También tengo la base de código github para la muestra 4 días atrás.
También me interesaría saber cómo instalar esto en el servidor web.
[...] además de gestionar tu estado de sesión ASP.NET con Couchbase Server, ahora puedes usar Couchbase Server como almacén de respaldo para tus [...]