Welcome to GASP Sign in | Join | Help

Paulo Morgado

Tudo sobre Arquitectura de Software

Localização dos Visitantes

  • Localização dos Visitantes

Livros

  • LINQ com C#

Eventos

Renûncia

As opiniões e pontos de vista expressos neste sítio são minhas e podem não reflectir as da Microsoft, do meu empregador, ou de qualquer comunidade a que pertença. Qualquer código ou opinião é oferecido sem qualquer garantia. Os produtos ou serviços mencionados são comprados por mim, disponibilizados pelo meu empregador ou pelo fabricante/vendedor o que não influencia em nada a minha opinião.

Armazenamento Em Memória De Estado De Sessão ASP.NET Seriado

O ASP.NET disponibiliza três tipos de armazenamento de estado de sessao:

Provider Description
InProc

O estado de sessão é armazenado no cache ASP.NET.

SQLServer

O estado de sessão é armazenado numa base de dados SQL Server.

StateServer

O estado de sessão é armazenado é armazenado num serviço de armazenamento de estado.

Porque com o SQLServer e o StateServer o estado tem de atravessar a fronteira do AppDomain, tem de ser seriado antes de ser armazenado e desseriado quando carregado. Porque o estado tem de ser carregado e armazenado em cada pedido, só está disponível desde o evento PostAcquireRequestState até ao evento ReleaseRequestState. E, devido à seriação e desseriação, todos os objectos armazenados têm de ser seriáveis e qualquer referência mantida para um item do estado não será para o mesmo item após a desseriação do estado.

Por outro lado, com o InProc, o estado nunca será seriado ou desseriado, o que quer dizer que os objectos não necessitam de ser seriáveis e qualquer referência para um item do estado será sempre uma referência para um item do estado mesmo antes do evento PostAcquireRequestState e após o evento ReleaseRequestState.

Na prática, durante o desenvolvimento é usado o InProc e em produção é usado o SQLServer. Isto leva, muitas vezes, a erros aplicacionais que apenas se manifestam em ambiente de produção, com armazenar objectos não seriáveis no estado. Foi por isso que escrevi um provedor de armazenamento de estado em memória que seria e desseria os itens armazenados. Podem obter o código fonte aqui.

Posted: Monday, August 04, 2008 2:28 AM by Paulo Morgado

Comments

Caxaria said:

Boas,

Só por curiosidade ( e dado que por vezes alguns termos técnicos perdem-se na tradução), seriado/desseriado != serializado/desserializado?

# August 4, 2008 11:53 AM

Paulo Morgado said:

Não sou especialista em línguas, por isso recorri à Infopedia (www.infopedia.pt).

A tradução que encontrei para "serialize" foi "seriar".

A tradução de "serial" para Português é "série". Como a palavar portuguesa não termina em 'l', não me parece correcto o sufixo "izar".

Mas fica estranho, não fica?

# August 4, 2008 2:15 PM
Anonymous comments are disabled