ASP.NET Core Provedor de sessão para NCache em Fazendas da Web

ASP.NET Core foi completamente re-arquitetado e, portanto, tem um sistema de gerenciamento de sessão diferente do ASP.NET mais antigo.

Embora ASP.NET Core fornece um provedor de sessão na memória que armazena sessões no próprio servidor web, ASP.NET Core armazenamento de sessão em web farms é um desafio.

Uma abordagem é usar sticky-sessions em web farms que roteiam todas as solicitações do usuário para o mesmo servidor web por meio do módulo Application Request Routing. Mas, sessões fixas podem afetar a escalabilidade e levar à distribuição de carga inadequada. Uma abordagem relativamente melhor é usar o SQL Server para armazenamento de sessão. No entanto, quando se trata de ASP escalável.NET core aplicações, o Bancos de dados SQL se tornam um gargalo de desempenho. Isso ocorre porque o SQL Server (como todos os bancos de dados relacionais) não é bom para armazenar BLOBs e as sessões são salvas no banco de dados como BLOBs.

Uma opção viável é usar um cache distribuído para armazenar ASP.NET Core sessões em uma web farm. E, o Cache Distribuído mais adequado para este fim é NCache que fornece um ASP poderoso e rico em recursos.NET Core Serviço de sessão que você pode usar.

NCache é extremamente cache distribuído rápido e escalável para .NET/.NET Core. Ele lida com cargas de transações extremas, permitindo que você adicione mais servidores de cache em tempo de execução e dimensione linearmente. Enquanto isso, NCache alta disponibilidade e cluster de cache dinâmico garantir que você não perca nenhum ASP.NET Core Dados da sessão se um servidor web ou um servidor de cache ficar inativo.

ASP.NET Core Sessão - NCache

Configurando ASP.NET Core Provedor de sessão para NCache

Ao contrário do ASP.NET, onde você modifica apenas o web.config, o ASP.NET exige que você modifique o "ConfigurarServiços()" na classe Startup. O código a seguir mostra como você pode fazer isso para NCache. Para mais detalhes, veja NCache ASP.NET Core Documentos de configuração do provedor de sessão e siga os passos.

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";
    });
}

Benefícios do ASP.NET Core Provedor de sessão para NCache

Em primeiro lugar, há muito pouca programação necessária para usar NCache como seu ASP.NET Core Provedor de Sessão; a alteração do código está no ConfigureServices(IServiceCollection services) método no Startup classe. Veja detalhes em Configurar ASP.NET Core Provedor de sessão para NCache. A seguir estão alguns dos benefícios de usar NCache como seu ASP.NET Core Provedor de estado de sessão:

  1. Alta disponibilidade: Seu ASP.NET Core A maioria dos aplicativos requer alta disponibilidade de qualquer coisa de que dependa na produção. E, NCache oferece isso através de um arquitetura de clustering peer-to-peer com autorrecuperação que não tem um único ponto de falha. NCache também replica ASP.NET Core Sessões para que não haja perda de dados caso um servidor fique inativo.

  2. Escalabilidade linear: Seu ASP.NET Core o aplicativo provavelmente precisa ser dimensionado para lidar com altas cargas de transações. E, se o seu ASP.NET Core O armazenamento de sessão não é dimensionado, então seu aplicativo também não. Felizmente, NCache fornece escalabilidade linear e nunca se torna um gargalo para o seu ASP.NET Core aplicação.

  3. Replicação de sessão inteligente: Embora a replicação de sessão forneça alta disponibilidade, ela vem com um custo de desempenho. NCache minimiza esse custo por meio de sua rica topologias de cache (Cache espelhado, Cache replicado e Cache de réplica de partição). NCache replica dados sem sacrificar o desempenho de forma perceptível e ainda alcança a confiabilidade dos dados.

  4. Serialização compacta rápida: A serialização .NET regular geralmente é lenta e volumosa para objetos maiores. Para lidar com esse gargalo, NCache implementou um Serialização compacta isso é muito mais rápido. Você só precisa registrar suas aulas e NCache faz o resto. Nenhuma programação é necessária. No momento da conexão, NCache gera código-fonte de serialização, compila-o na memória e, em seguida, usa-o para serialização.

Suporte para várias regiões (data centers)

NCache permite gerenciar ASP.NET Core Sessões para aplicativos executados em várias regiões (data centers). Aqui estão eles:

  1. Replicação WAN do ASP.NET Core Sessões: NCache fornece um recurso Multi-Datacenter WAN Replications que também permite replicar todos os ASP.NET Core sessões na WAN para outra região (datacenter). Isso é feito através de um recurso Bridge Topology de NCache. Isso garante que seu ASP.NET Core as sessões nunca são perdidas mesmo se uma região (datacenter) ficar inativa.

  2. Estado da sessão ASP.NET multirregional: Se você não quiser replicar o estado de sessão do ASP.NET na WAN devido ao custo de consumo de largura de banda, poderá optar por usar NCache Recurso de estado de sessão ASP.NET de vários sites. Nesse caso, o Estado de Sessão ASP.NET não é replicado entre sites e, em vez disso, é mantido no local de sua criação. Mas, se você mover qualquer tráfego de uma região (datacenter) para outra, o estado de sessão ASP.NET se moverá com ele. Para mais detalhes, você pode ler nossa página de produto para Provedor de estado de sessão ASP.NET multirregional para NCache.

Recursos avançados em NCache ASP.NET Core Provedor de sessão

ASP.NET Core Provedor de sessão para NCache implementa todo o ASP padrão.NET Core Recursos do provedor de sessão. Além disso, ele implementa vários recursos avançados para permitir que você lide com situações complexas em seus aplicativos no ConfigureServices(IServiceCollection services) método.

  1. Bloqueio de sessão padrão: O ASP padrão.NET Core comportamento de bloqueio de sessão é que a sessão nunca é bloqueada. Como resultado, você pode corromper a sessão se tentar atualizá-la simultaneamente. Assim, NCache implementou um recurso de bloqueio de sessão semelhante ao estado de sessão ASP.NET mais antigo, em que, se uma sessão estiver bloqueada, outra solicitação aguarda por 90 segundos (configurável) e, no final, desbloqueia a sessão à força. Você pode especificar esta opção de bloqueio como as seguintes propriedades na "configuração":

    services.AddNCacheSession(configuration =>
    {
    configuration.RequestTimeout = 90;
    configuration.EnableSessionLocking = true;
    configuration.SessionLockingRetry = -1;
    configuration.EmptySessionWhenLocked = false;
    ...
    });
  2. Bloqueio de sessão aprimorado: Para um ASP de alto tráfego.NET Core aplicativo, você pode ter robôs extraindo dados e usando o mesmo ID de sessão para centenas ou milhares de solicitações simultaneamente. Nesse caso, você não pode arcar com a opção de bloqueio de sessão padrão porque esperar 90 segundos pode comprometer todos os soquetes disponíveis. Em vez disso, você deseja retornar a solicitação rapidamente para indicar uma falha. Você pode especificar isso da seguinte forma:

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

    Isso faz 5 tentativas em intervalos de meio segundo e, em seguida, retorna uma sessão vazia para indicar uma falha. Até mesmo lançar uma exceção aqui é caro. É por isso que uma sessão vazia é implementada. Esse comportamento foi implementado originalmente em uma solicitação de um site de uma companhia aérea de alto tráfego.

  3. Erro ao registrar: Você pode habilitar o log de erros em um arquivo de log em seu servidor web (no INSTALL_DIR\NCache\log-files\SessionStoreProvider pasta) especificando o "EnableLogs" e "WriteExceptionsToEventLog" propriedades de configuração da seguinte forma:

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

O que fazer a seguir

Inscreva-se no boletim informativo mensal por e-mail para obter as atualizações mais recentes.

© Copyright Alachisoft 2002 - . Todos os direitos reservados. NCache é uma marca registrada da Diyatech Corp.