.NET

Gerenciamento de sessão distribuída no ASP.NET Core com o Couchbase

A sessão distribuída é uma maneira de armazenar o estado da sessão fora do aplicativo ASP.NET Core. Usar o Couchbase para armazenar o estado da sessão pode ajudá-lo quando você precisar dimensionar seu site, especialmente se não quiser usar o sessões fixas.

Você pode acompanhar os exemplos de código que criei, disponíveis em GitHub.

Observe que o Couchbase.Extensions.Session é uma versão beta no momento em que este artigo foi escrito.

O que é estado de sessão?

O estado da sessão é simplesmente uma forma de armazenar dados de um determinado usuário. Normalmente, um token é armazenado em um cookie de usuário, e esse token funciona como uma chave para algum conjunto de dados no lado do servidor.

Como ativar a sessão no ASP.NET

Se você estiver familiarizado com ASP.NET ou ASP Classic, isso é feito usando Sessão. Todo o trabalho do cookie é feito nos bastidores, portanto, basta usar Sessão como um dicionário para armazenar e recuperar os dados que você desejar.

Por padrão, no ASP.NET e no ASP Classic, essas informações são armazenadas na memória, como parte do processo do aplicativo Web.

No ASP.NET Core, você também pode optar por isso configurando a sessão com AddSession.

Primeiro, em Startup.cs, na seção Configurar diga ao ASP.NET Core para usar a sessão:

Então, no ConfigureServices função, use AddSession para adicionar um serviço de provedor de sessão.

(Isso usará as configurações de sessão padrão, consulte a seção Documentação do ASP.NET Core para obter mais informações).

O que é gerenciamento de sessão no ASP.NET Core?

O gerenciamento de sessão no ASP.NET Core é uma maneira de armazenar e gerenciar dados específicos do usuário em várias solicitações dentro de um aplicativo da Web. Ele usa um token de sessão, normalmente armazenado em um cookie, para associar o usuário aos seus dados no servidor. As sessões podem ser armazenadas na memória, em sistemas distribuídos ou em bancos de dados, permitindo o tratamento dimensionável e eficiente do estado do usuário nos aplicativos.

Uma sessão distribuída é uma maneira de armazenar o estado da sessão fora do aplicativo ASP.NET Core. Usar o Couchbase para armazenar o estado da sessão pode ajudá-lo quando você precisar dimensionar seu site, especialmente se não quiser usar sessões fixas.

Por que o gerenciamento distribuído de sessões?

No entanto, se você estiver ampliando seu aplicativo Web com vários servidores Web, terá de tomar algumas decisões sobre a sessão. Se você continuar a usar a sessão em processo, deverá configurar sessões fixas (o primeiro servidor da Web que o usuário acessar é aquele que ele "manterá" para as solicitações subsequentes). Isso tem algumas possíveis desvantagens (consulte este tópico no ServerFault e este artigo na revista TechNet da Microsoft).

Se você não quiser usar sessões fixas, não poderá usar a opção de sessão em processo. Em vez disso, você precisará usar uma sessão distribuída. Há muitas opções de onde colocar os dados da sessão, mas a arquitetura do Couchbase que prioriza a memória e os recursos flexíveis de dimensionamento fazem dele uma boa escolha.

Usando a sessão distribuída no ASP.NET Core

Antes de começar a escrever o código, você precisará de um cluster do Couchbase Server em execução com um bucket (chamei o meu de "sessionstore"). Também será necessário criar um usuário com permissão de Data Reader e Data Writer no bucket (também chamei meu usuário de "sessionstore" para simplificar as coisas).

Adição de Couchbase.Extensions.Session

Agora, abra seu aplicativo ASP.NET Core no Visual Studio. (Criei um novo aplicativo ASP.NET Core MVC, que que você pode encontrar no GitHub). Em seguida, com o NuGet, instale a biblioteca Couchbase.Extensions.Session:

  • Use a interface do usuário NuGet (veja abaixo) ou
  • Instalar o pacote Couchbase.Extensions.Session -Versão 1.0.0-beta2 com o Gerenciador de pacotes, ou
  • dotnet add package Couchbase.Extensions.Session --versão 1.0.0-beta2 com a linha de comando do dotnet

Couchbase Extensions with NuGet

Configuração do Couchbase

Para configurar o provedor de sessão, você escreverá um código que parece familiar se você estiver acompanhando esta série sobre o Couchbase.Extensions.

O ConfigureServices em Startup.cs é onde você adicionará o código de configuração.

Primeiro, use AddCouchbaseque é feito com o Injeção de dependência extensão.

Depois disso, configure o cache distribuído para o Couchbase com AddDistributedCouchbaseCacheque abordei em uma postagem do blog sobre cache distribuído.

Por fim, configure o Couchbase como um armazenamento de sessão com AddCouchbaseSession.

Você pode configurar o tempo limite de inatividade (quanto tempo falta para a sessão expirar depois de não ser usada), o nome do cookie e muito mais, se necessário. No exemplo acima, configurei o tempo limite para 20 minutos e o nome do cookie para ".MyApp.Cookie".

Gravação em uma sessão distribuída

Para acessar os dados da sessão, você pode usar HttpContext.Session.

Primeiro, quero escrever algo para a sessão. Em uma Sobre usei a ação do controlador SetObject método:

Desse ponto em diante, sempre que você clicar para exibir a página "Sobre", um novo valor será armazenado na sessão com a chave "sessionkey". Se você mudar para o Console do Couchbase, poderá ver os dados que estão sendo armazenados.

Distributed session document in Couchbase

Observe que a sessão de um usuário é representada por um único documento. Portanto, se eu inserisse outro valor de sessão (como abaixo), esse valor seria armazenado no mesmo documento.

O documento resultante teria a seguinte aparência:

Two distributed session keys

Você deve ter cuidado para não exagerar na quantidade de dados que coloca na sessão, pois os documentos do Couchbase são limitados a 20 MB.

Leitura de uma sessão distribuída

Para obter um valor da sessão, você pode usar GetObject e fornecer a chave de sessão. No código de exemplo, fiz isso na seção Contato ação:

Depois de visitar a página "Sobre" pelo menos uma vez, vá para a página "Contato". Você deverá ver o objeto de sessão impresso na página.

Output to ASP.NET from distributed session

É basicamente isso. Há alguns outros métodos relativamente óbvios disponíveis em Sessão. Eles também são descrito na documentação do ASP.NET Core.

Mais uma coisa: nomeei o cookie (".MyApp.Cookie"). Você pode visualizar esse cookie no navegador de sua preferência. No Chrome, use Ctrl+Shift+I e navegue até a guia "Application" (Aplicativo). Você verá o cookie e seu valor.

Session cookie

Em geral, você não precisa conhecer esse detalhe no seu dia a dia como desenvolvedor do ASP.NET Core, mas é bom saber como as coisas funcionam, por precaução.

Resumo

A extensão de sessão distribuída para o Couchbase é outra ferramenta em sua caixa para ajudar a dimensionar seus aplicativos ASP.NET Core. Essas práticas extensões .NET ajudam a demonstrar como o Couchbase é a solução ideal para o seu negócio. banco de dados de engajamento plataforma de que você precisa.

Se você tiver perguntas ou comentários sobre as extensões do Couchbase, não deixe de conferir o Repositório do GitHub ou o Fóruns do SDK do Couchbase .NET.

E entre em contato comigo se tiver dúvidas sobre tudo relacionado a .NET e Couchbase, deixando um comentário abaixo ou encontrando-me em Twitter @mgroves.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Matthew Groves

Matthew D. Groves é um cara que adora programar. Não importa se é C#, jQuery ou PHP: ele enviará solicitações de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente sênior de marketing de produtos da Couchbase. Seu tempo livre é passado com a família, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele é autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.