Observe que esta é a versão 1.0 mais antiga do provedor de sessão. Consulte aqui para uma postagem sobre a nova e aprimorada versão 2.0.
Uma pergunta que costumo fazer aos desenvolvedores em uma entrevista telefônica para uma vaga de desenvolvedor ASP.NET é discutir as diferentes opções de gerenciamento do estado da sessão em um aplicativo ASP.NET. Gosto dessa pergunta porque ela me dá uma visão rápida dos tipos de aplicativos em que o desenvolvedor tem trabalhado e da função que ele desempenhou em sua equipe.
A parte de memorização da pergunta é claramente conhecer os diferentes provedores prontos para uso. Os desenvolvedores que trabalham em sites menores ou que não têm uma função de suporte à produção geralmente conhecem o estado da sessão em processo, mas não estão familiarizados com os provedores fora do processo e com os problemas que eles resolvem.
Ao longo dos anos, descobri que um servidor de estado geralmente era suficiente para um site com tráfego razoavelmente alto. Mas isso tem um único e óbvio ponto de falha. O gerenciamento do estado da sessão com o SQL Server é durável, mas claramente será mais lento. Nunca me senti confortável em aumentar a E/S de disco no servidor de banco de dados para o gerenciamento de sessões.
A resposta certa parece ser usar um armazenamento de apoio que não esteja vinculado a E/S e não dependa do tempo de atividade de um único servidor. Essa descrição se aplica ao Couchbase Server. Portanto, se você quiser a velocidade de usar um servidor de estado de sessão na memória com a durabilidade de uma instância do SQL Server, agora você tem a opção de usar o provedor de estado de sessão do Couchbase ASP.NET.
Recém-publicado no CouchbaseLabs no GitHub, é um porto do antigo Enyim Memcached provedor de estado de sessão. Há também um aplicativo de amostra incluído para que você comece a trabalhar rapidamente.
Usar o novo provedor é muito simples. Supondo que você tenha configurado o cluster, tudo o que precisa fazer é atualizar o web.config com as configurações da biblioteca de clientes do Couchbase .NET e atualizar a seção de configuração sessionState.
<couchbase>
<servidores balde="default" bucketPassword=“”>
<add uri="http://127.0.0.1:8091/pools/default"/>
>
>
<provedores>
<add nome="Couchbase" tipo="Couchbase.AspNet.SessionState.CouchbaseSessionStateProvider, Couchbase.AspNet" />
>
>
Depois que essas configurações estiverem em vigor, basta usar o objeto Session (ou ViewData, ViewBag e TempData no MVC) como sempre fez.
Não se esqueça de que você precisará marcar suas próprias classes como serializáveis para persisti-las no Couchbase Server.
[Serializável]
público classe SessionUser
{
público string Nome de usuário { obter; definir; }
público string E-mail { obter; definir; }
}
Observe que esse provedor está incluído como parte do Couchbase Labs e não é um produto com suporte oficial. Você está livre para usar o código como quiser, pois ele está licenciado sob a Apache License 2.0.
Boa postagem! Manter o processo de estado da sessão em programadores ASP f ou ASP NET é muito essencial e, para isso, eles precisam ter certos pontos em mente enquanto trabalham em qualquer projeto, módulo ou aplicativo.
Isso é compatível com o Couchbase 2.0 ou devemos esperar uma atualização para ele também?
Não há nada de errado na API que não permita que ela funcione com o servidor 2.0; no entanto, o projeto SessionStateProvider terá de ser atualizado para usar o cliente .NET 1.2 quando você o criar. Tentarei lançar um pacote NuGet atualizado em breve...
Mais 1 voto para que o provedor de estado de sessão seja atualizado no NuGet! Muito obrigado.
O provedor SessionState do Couchbase ASP.NET foi testado com o servidor Couchbase 2.0?
Até o momento, ele não foi atualizado para a versão 2.0. Isso não quer dizer que ele não funcione com a versão 2.0, mas eu pessoalmente não o executei na versão 2.0. No entanto, tentarei fazer isso em um futuro próximo...
Podemos definir o tempo limite da sessão para o couchbase em menos de 500 minutos no Web.config? Porque eu estava definindo o tempo limite da sessão para 60 minutos, mas não estava funcionando e, quando o defino para 500 minutos ou nada, ele funciona perfeitamente. Não encontrei nenhum motivo para isso.
Isso está relacionado ao gerenciamento de cluster de nuvem ou a outra coisa?
Em Web.config,
<sessionstate customprovider=\”Couchbase\” mode=\”Custom\” timeout=\”60\”>
<providers>
<add name=\”Couchbase\” type=\”Couchbase.AspNet.SessionState.CouchbaseSessionStateProvider, Couchbase.AspNet\”/>
</providers>
</sessionstate>
Você poderia descrever o que quer dizer com \"não está funcionando?\" Você estava vendo erros?
Olá, John - você fez algum teste de desempenho sobre isso para o estado da sessão ASP versus o estado do SQL Server versus o estado do Couchbase?
Alguém testou isso com o couchbase 2.0? Esse parece ser um projeto muito interessante.
Ouvi falar de seu uso com a versão 2.0, mas não houve nenhuma atualização recentemente. O Couchbase Server 2.0 e 2.1 são compatíveis com tudo o que funcionava com o 1.8.
Olá, Matt
Sim, fiz um teste com o 2+ e está funcionando bem - ótimo material, amigo
Decidi tentar, mas não estou conseguindo carregar o assembly. Ele está no GAC do meu servidor Windows 2k8 com IIS7 (.NET 4.5), mas o IIS ainda me dá a mensagem \"Could not load file or assembly\". Há uma entrada de adição de assembly no web.config global para a versão exata da estrutura que meu aplicativo usa. Verifiquei com o gacutil que ela realmente está no gac.
Além disso, não há nenhum tipo de instrução de instalação, nem aqui nem no github. Essas informações básicas não deveriam ser incluídas no readme?
Usando isso com sucesso com o couchbase 2.1.1 Enterprise.
Usei o projeto ASP.NET MVC de amostra para realizar um teste de carga. Meu teste de carga consiste em executar um POST de login e, em seguida, carregar a página inicial usando a sessão. Descobri que o provedor de estado de sessão do Couchbase é quatro vezes mais lento do que o provedor de sessão do SQL Server. Quando uso um cluster do Couchbase de 2 nós, com 4 vCPUs, 8 GB de RAM cada, um bucket memcached, consigo gerar apenas cerca de 80 TPS. O SQL Server me dá mais de 200 TPS! Em seguida, usei um único nó para ver se a replicação de vários nós está derrubando ou não. Obtive apenas 57 TPS. Posso ver no painel do couchbase que ele está fazendo 531 operações por segundo. Portanto, quase 10 vezes mais operações em comparação com a página ASP.NET atingida.
Couchbase
http://imgur.com/oF9Miwz
SQL Server
http://imgur.com/hhRIqiN
@oazabir:disqus-
Esses números parecem muito baixos para o Couchbase em geral, portanto, não tenho certeza do que exatamente está acontecendo de errado aqui. Estamos trabalhando em algumas melhorias e devemos ter uma nova versão do provedor em breve, o que pode resolver algumas das diferenças que você encontrou.
Curioso, com qual versão do provedor, SDK e Couchbase você está testando? Seu cluster está hospedado no local ou na nuvem?
Obrigado,
Jeff
Obrigado Jeff por responder. Fiz o download da versão 4.0 do Couchbase e do SDK mais recente há quatro dias. Também obtive a base de código do github para a amostra há quatro dias.
Eu também gostaria de saber como instalar isso no servidor da Web.
[...] além de gerenciar o estado da sessão do ASP.NET com o Couchbase Server, agora você pode usar o Couchbase Server como o repositório de apoio para seu [...]