ASP.NET Core Proveedor de sesión para NCache en granjas web

ASP.NET Core se ha rediseñado por completo y, por lo tanto, tiene un sistema de gestión de sesiones diferente al del antiguo ASP.NET.

Aunque ASP.NET Core proporciona un proveedor de sesión en memoria que almacena sesiones en el propio servidor web, ASP.NET Core almacenamiento de sesiones en granjas web es un desafío.

Un enfoque es utilizar sesiones persistentes en granjas web que enrutan todas las solicitudes de los usuarios al mismo servidor web a través del módulo de enrutamiento de solicitudes de aplicaciones. Sin embargo, las sesiones pegajosas pueden afectar la escalabilidad y provocar una distribución de carga incorrecta. Un enfoque relativamente mejor es utilizar SQL Server para el almacenamiento de sesiones. Sin embargo, cuando se trata de ASP escalable.NET core aplicaciones, la Las bases de datos SQL se convierten en un cuello de botella de rendimiento. Esto se debe a que SQL Server (como todas las bases de datos relacionales) no es bueno para almacenar BLOB y las sesiones se guardan en la base de datos como BLOB.

Una opción viable es utilizar un caché distribuida para almacenar ASP.NET Core sesiones en una granja web. Y, el caché distribuido más apropiado para este propósito es NCache que proporciona un ASP potente y rico en funciones.NET Core Servicio de sesión que puede utilizar.

NCache es un extremadamente caché distribuida rápida y escalable para .NET/.NET Core. Maneja la carga extrema de transacciones al permitirle agregar más servidores de caché en tiempo de ejecución y escalar linealmente. Mientras tanto, NCache alta disponibilidad y agrupación dinámica de caché asegúrese de no perder ningún ASP.NET Core Datos de sesión si un servidor web o un servidor de caché deja de funcionar.

ASP.NET Core Sesion NCache

Configuración de ASP.NET Core Proveedor de sesión para NCache

A diferencia de ASP.NET, donde solo modifica web.config, ASP.NET requiere que modifique el "Configurar Servicios ()" método en la clase Startup. El siguiente código muestra cómo puede hacerlo para NCache. Para obtener más detalles, consulte NCache ASP.NET Core Documentos de configuración del proveedor de sesiones y sigue los pasos.

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services
    services.AddMvc();

    // Add NCache Session service to IServiceCollection with various configuration 
    // options

    services.AddNCacheSession(configuration =>
    {
        configuration.CacheName = "mySessionCache";
        configuration.EnableLogs = true;
        configuration.SessionAppId = "NCacheSessionApp";
        configuration.SessionOptions.IdleTimeout = 5;
        configuration.SessionOptions.CookieName = "AspNetCore.Session";
    });
}

Beneficios de ASP.NET Core Proveedor de sesión para NCache

En primer lugar, se requiere muy poca programación para usar NCache como su ASP.NET Core proveedor de sesión; el cambio de codigo esta en el ConfigureServices(IServiceCollection services) método en el Startup clase. Ver detalles en Configurar ASP.NET Core Proveedor de sesión para NCache. Los siguientes son algunos de los beneficios de usar NCache como su ASP.NET Core Proveedor de estado de sesión:

  1. Alta disponibilidad: su ASP.NET Core La mayoría de las aplicaciones requieren alta disponibilidad de cualquier cosa de la que dependa en producción. Y, NCache le proporciona esto a través de un Arquitectura de agrupación en clústeres de igual a igual con recuperación automática que no tiene un solo punto de falla. NCache también replica ASP.NET Core Sesiones para que no haya pérdida de datos en caso de que un servidor se caiga.

  2. Escalabilidad lineal: su ASP.NET Core Lo más probable es que la aplicación necesite escalar para manejar grandes cargas de transacciones. Y, si su ASP.NET Core El almacén de sesiones no se escala, entonces su aplicación tampoco lo hará. Afortunadamente, NCache proporciona un escalabilidad lineal y nunca se convierte en un cuello de botella para su ASP.NET Core .

  3. Replicación inteligente de sesiones: Aunque la replicación de sesiones proporciona alta disponibilidad, tiene un costo de rendimiento. NCache minimiza este costo a través de su rico topologías de almacenamiento en caché (caché reflejada, caché replicada y caché de réplica de partición). NCache replica los datos sin sacrificar el rendimiento de forma notable y, sin embargo, logra la confiabilidad de los datos.

  4. Serialización compacta rápida: La serialización regular de .NET suele ser lenta y voluminosa para objetos más grandes. Para manejar este cuello de botella, NCache ha implementado un Serialización compacta eso es mucho más rápido. Solo tienes que registrar tus clases y NCache hace el resto. No se necesita programación. En el momento de la conexión, NCache genera código fuente de serialización, lo compila en memoria y luego lo usa para la serialización.

Soporte para Múltiples Regiones (Centros de Datos)

NCache le permite administrar ASP.NET Core Sesiones para aplicaciones que se ejecutan en varias regiones (centros de datos). Aquí están:

  1. Replicación WAN de ASP.NET Core Sesiones: NCache proporciona una función de replicaciones WAN de múltiples centros de datos que también le permite replicar todos los ASP.NET Core sesiones a través de la WAN a otra región (centro de datos). Esto se hace a través de una función de topología de puente de NCache. Esto asegura que su ASP.NET Core las sesiones nunca se pierden incluso si una región (centro de datos) deja de funcionar.

  2. Estado de sesión de ASP.NET de múltiples regiones: Si no desea replicar el estado de sesión de ASP.NET en la WAN debido al costo de consumo de ancho de banda, puede elegir usar NCache Función de estado de sesión ASP.NET multisitio. En esto, el estado de sesión de ASP.NET no se replica en los sitios y, en cambio, se mantiene en la ubicación de su creación. Pero, si mueve cualquier tráfico de una región (centro de datos) a otra, el estado de sesión de ASP.NET se mueve con él. Para obtener más detalles, puede leer nuestra página de productos para Proveedor de estado de sesión de ASP.NET multirregional para NCache.

Funciones avanzadas en NCache ASP.NET Core Proveedor de sesión

ASP.NET Core Proveedor de sesión para NCache implementa todo el ASP estándar.NET Core Características del proveedor de sesión. Además, implementa varias funciones avanzadas que le permiten manejar situaciones complejas en sus aplicaciones en el ConfigureServices(IServiceCollection services) método.

  1. Bloqueo de sesión estándar: El ASP estándar.NET Core el comportamiento de bloqueo de la sesión es que la sesión nunca se bloquea. Como resultado, puede corromper la sesión si intenta actualizarla simultáneamente. Entonces, NCache ha implementado una función de bloqueo de sesión similar al antiguo estado de sesión de ASP.NET en el que si una sesión está bloqueada, otra solicitud espera 90 segundos (configurable) y al final desbloquea la sesión a la fuerza. Puede especificar esta opción de bloqueo como las siguientes propiedades en la "configuración":

    services.AddNCacheSession(configuration =>
    {
    configuration.RequestTimeout = 90;
    configuration.EnableSessionLocking = true;
    configuration.SessionLockingRetry = -1;
    configuration.EmptySessionWhenLocked = false;
    ...
    });
  2. Bloqueo de sesión mejorado: Para un ASP de alto tráfico.NET Core aplicación, puede tener robots extrayendo datos y usando la misma identificación de sesión para cientos o miles de solicitudes simultáneamente. En este caso, no puede permitirse la opción de bloqueo de sesión estándar porque esperar 90 segundos podría bloquear todos los sockets disponibles. En su lugar, desea devolver la solicitud rápidamente para indicar un error. Puede especificar esto de la siguiente manera:

    services.AddNCacheSession(configuration =>
    {
    configuration.EnableSessionLocking = true;
    configuration.SessionLockingRetry = 5;
    configuration.EmptySessionWhenLocked = true;
    ...
    });

    Esto hace 5 reintentos a intervalos de medio segundo y luego devuelve una sesión vacía para indicar una falla. Incluso lanzar una excepción aquí es costoso. Es por eso que se implementa una sesión vacía. Este comportamiento se implementó originalmente en una solicitud del sitio web de una aerolínea de alto tráfico.

  3. Registro de errores: Puede habilitar el registro de errores en un archivo de registro en su servidor web (en INSTALL_DIR\NCache\log-files\SessionStoreProvider carpeta) especificando "EnableLogs" y "WriteExceptionsToEventLog" propiedades de configuración de la siguiente manera:

    services.AddNCacheSession(configuration =>
    {
    configuration.EnableLogs = true;
    configuration.WriteExceptionsToEventLog = false;
    ...
    });
    

Qué hacer a continuación

Suscríbase al boletín mensual por correo electrónico para obtener las últimas actualizaciones.

© Copyright Alachisoft 2002 - Todos los derechos reservados. NCache es una marca registrada de Diyatech Corp.