Static o ViewState?

lunedì 25 agosto 2008 - 11.10

Anonimo Profilo | Senior Member

Secondo voi è meglio usare una variabile statica o un ViewState per mantenere dei valori durante i PostBack? Se esistono differenze importanti quali sono?
Grazie.

Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Chief Solution Architect

alx_81 Profilo | Guru

>Secondo voi è meglio usare una variabile statica o un ViewState
>per mantenere dei valori durante i PostBack? Se esistono differenze
>importanti quali sono?
Sono proprio due cose completamente diverse. Se con statiche intendi variabili dichiarate come static (shared in vb) stai parlando di membri che appartengono ad un tipo e non all'oggetto (istanza):

Static (C# Reference)
http://msdn.microsoft.com/it-it/library/98f28cdx(VS.80).aspx

Il viewstate invece è proprio un campo hidden che permette quello che è la persistenza dei dati durante le fasi di postback:

Understanding ASP.Net viewstate
http://msdn.microsoft.com/en-us/library/ms972976.aspx

>Grazie.
di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

Anonimo Profilo | Senior Member

Grazie per la risposta, che sono cose diverse lo so, uno è tipizzato l'altro no, ma il mio problema è capire cosa è meglio usare e perchè. Cosa è più performante?

Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Chief Solution Architect

rossimarko Profilo | Guru

>Grazie per la risposta, che sono cose diverse lo so, uno è tipizzato
>l'altro no, ma il mio problema è capire cosa è meglio usare e
>perchè. Cosa è più performante?
>

Ciao,

la differenza tra i due consiste nella logica di funzionamento. Il viewstate è salvato in pagina mentre la variabile statica è una unica all'interno del processo corrente (quello che sta facendo girare il sito web), quindi nel caso in cui due utenti stiano visualizzando la pagina avrai due comportamenti differenti:
- con il viewstate ognuno memorizzerà nel viestate il proprio valore e questo non interferirà con nessun altro utente
- con la variabile statica il valore memorizzato sarà lo stesso per tutti quindi avrai dei problemi di concorrenza. Un utente potrebbe salvare un valore e il secondo che si collega lo sovrascrive.

Se quello che vuoi salvare è un qualcosa legato all'utente allora l'unica soluzione è il viewstate, o in alternativa la session.

Per quanto riguarda la tipizzazione del viewstate è verò che utilizza degli object però è facilmente mascherabile attraverso una property all'interno della pagina. Io consiglio di accentrare sempre l'accesso al viewstate con una property, ad esempio:

private int IDSelezionato { get { object obj = ViewState["IDSelezionato"]; if (obj != null) return Convert.ToInt32(obj); else return -1; } set { ViewState["IDSelezionato"] = value; } }
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5