Pergunta

Pediram-me até chegar a uma estratégia de gerenciamento de estado para um ASP .NET / MVC C # 3.5 Web App

Eu escolhi ir com o armazenamento de sessões em um servidor de estado - esta será uma caixa física separada. Estou preocupado com o tempo que seria levado para serialize / desserializar objetos ao armazenar em sessões ...

Alguém sabe de uma técnica para obter o máximo desempenho ao fazer isso?

Também seria algo como comprimir informações antes de armazená-lo em ajuda sessão ou se isso também resultar em tempos de desempenho mais lento.

EDIT:. Eu estou usando uma caixa separada para o servidor de estado, como vamos ter vários servidores web

Foi útil?

Solução

Exemplo de Zip compressão no Session, Application, e Cache, usado aqui em StackOverflow.

Outras dicas

Pessoalmente Os elementos mais comuns aqui são para trabalhar com a redução da quantidade de colocar informações em sessão.

Compression podem salvar espaço, mas vai demorar mais tempo de CPU para fazê-lo, mais do que provável causando desempenho reduzido ou no mínimo ganho nenhuma rede. A menos que você está falando realmente grandes objetos.

Certifique-se de desativar o estado da sessão em páginas que não usá-lo. "Por padrão, o ASP.NET estado da sessão Manager executa dois acessos e um acesso de leitura e uma escrita de acesso ao armazenamento de dados da sessão em cada pedido, independentemente da página solicitada usos estado de sessão." --MSDN Revista

Tenha cuidado para que você não está tentando otimizar prematuramente a sua solução. Antes de implementar algo como compressão Session, provavelmente seria uma boa idéia para realizar uma série de benchmarks para determinar se algo como isso é mesmo necessário na sua aplicação.

Você tem certeza que estará armazenando que muitos dados em seu armazenamento de sessão? uso típico de uma sessão para um único usuário é algumas centenas de bytes!

Quanto a serialização e de serialização, com esse tamanho meio pequeno é negilable.

Claro que você vai estar esperando mais usuários do que isso, mas ainda assim.

Se o seu armazenamento de grandes quantidades de dados em sua sessão, em seguida, IMO, seu fazendo errado.

Vários têm apontado que muitos dados em estado de sessão por usuário é um sinal de um problema, mas eles não têm diretamente apontada para a solução para isso: manter um banco de dados de usuário do SQL e armazenar todas as informações do usuário em que . Em seguida, o estado da sessão normalmente consiste de apenas o registrado no ID do usuário. Qualquer outro estado é provavelmente diretamente relacionados à atividade atual do usuário, o que sugere que pode eventualmente ser realizado ao longo de mais apropriadamente como biscoitos na memória ou variáveis ??querystring. Muitas vezes, esta é a melhor opção de qualquer maneira, para que as coisas para entrar em um estado corrupto quando os usuários clicam seus botões Avançar e Voltar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top