Existe sessão no .NET MVC?

     Fala pessoal, gostaria de comentar um pouco slogo_aspmvc345obre um tópico que surgir recentemente em uma discussão de trabalho. A maioria das aplicações com que trabalho ainda adotam o modelo WebForms do ASP.NET, recentemente um colega estava fazendo um adaptação de uma dessas aplicações para fazer um upgrade para o modelo MVC e surgiram as primeiras dúvidas. Como transformar algo que foi criado usando fortemente a ideia do viewstate para algo mais “leve” como o MVC?

     O ASP.NET MVC já está ai faz um tempo e veio para ficar. A ideia toda é resolver alguns probleminhas nativos de aplicações que trabalham no modelo WebForms, como por exemplo, pouco controle na geração do HTML com o uso de controles, dificuldade na execução de testes unitários por causa do alto nível de acoplamento, impacto negativo do uso inadequado do viewstate,  entre outros pontos. Estou mencionando isso pois o viewstate é uma das forma que o ASP.NET  WebForms usa para armazenar valores associados aos componentes da tela evitando gets/posts desnecessários no servidor, outras estruturas como as Sessions e Cookies ainda existem no MVC e podem ser usadas se isso for feito com cuidado. Então o que deve ser feito ao se trabalhar com um carrinho de compras em sua lojinha virtual (exemplo clássico)?

Não existem regras absolutas aqui mas eis uma sugestão:

  1. Desabilite o uso de sessão no web.config da sua aplicação
  2. Mantenha os dados do usuário de outra forma, talvez um cookie, querystring, Web Storage do HTML5 ou em um banco relacional ou NoSQL.
  3. No caso de um carrinho de compras pode-se criar uma tabela “Carrinho” no banco e manter o estado do carrinho e ao fechar a compra o carrinho é limpo no banco. Apesar da abordagem exigir atualizações constante em banco, para muitas empresas ter esses dados valiosos sobre o que você tem desejo de comprar, mesmo que não compre, é bem interessante.

     Em muitos casos usar o session pode trazer uma facilidade por ser simples mas tem que ter cuidado com os efeitos colaterais se estiver criando algo dependente de uma boa performance. Como falei cada caso deve analisar a necessidade de implementação, a autenticação pode ser feita usando o Claims do ASP.NET Identity.

Post rápido ne? Até o próximo.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s