A propósito do artigo asp.net page flow (user controls), um colega aqui do meu departamento na Primavera alertou-me (e bem) do eventual perigo da utilização da variáveis estáticas.
Onde eu dizia “Outro pormenor interessante é a utilização de variáveis estáticas (static / shared) que basicamente persistem o seu valor entre postbacks e estão logo disponiveis no primeiro evento – Init.”
Deveria ter dito: Naturalmente as variáveis estáticas (static / shared) mantêm o seu valor entre postbacks precisamente pelo facto de serem estáticas e por isso não implicarem a criação de uma nova instância. Ao fim e ao cabo é o padrão singleton em acção. No caso do ASP.Net, como tudo corre dentro do mesmo processo isto quase que se traduz numa espécie de variavel do tipo Application.
Shared Variables in Classes – A shared variable is created just once for any objects that are declared of a certain class type.
Persistent to a client action (postback) in ASPNET are
A viewstate item (belongs to the page)
A session item (belongs as IIS part to the client)
A shared variable (belongs to the application)
A cache item (is used by the total application)
When you store data in a static variable, the data is available to all users on the entire AppDomain. If you need a single instance of some object per user, put it in the Session instead.
Deixe um comentário