La funzionalità ViewState di ASP.NET è una caratteristica integrata che gestisce lo stato lato client preservando i valori di pagine e controlli tra le richieste complete del client. Ciò offre una capacità di programmazione con stato completo su un protocollo senza stato come HTTP.
Questo stato viene memorizzato in un campo nascosto della pagina come stringa Base64 codificata, come parte di ogni risposta inviata al client. Viene restituito al server dal client come parte di un postback.
<input id = "__VIEWSTATE"
type = "hidden"
name = "__VIEWSTATE"
value = "/wEPDwUJNzg0MDMxMDA1D2QWAmYPZBYCZg9kFgQCAQ9kFgICBQ9kFgJmD2QWAgIBD
xYCHhNQcm2aW91c0NvbnRyb2xNb2RlCymIAU1pY3Jvc29mdC5TaGFyZVBvaW50Lld
lYkNvbnRyb2xzLlNQQ29udHJbE1vZDA1XzRlMjJfODM3Y19kOWQ1ZTc2YmY1M2IPD
2...=="/>
Sebbene molto utile, il View State di ASP.NET presenta alcuni problemi che è necessario risolvere. Questi problemi sono descritti di seguito.
Un modo per risolvere questi problemi di View State di ASP.NET è memorizzare l'effettivo Stato della vista ASP.NET sul server web e inviando un token univoco (o ID) al suo posto al browser. In questo modo il browser può inviare nuovamente questo token al server web la volta successiva. Il server web utilizza quindi questo token per trovare il corretto View State di ASP.NET nel suo archivio. Di seguito è riportato un esempio di utilizzo di un token.
<input type = "hidden"
name = "__VIEWSTATE"
id = "__VIEWSTATE"
value = "vs:cf8c8d3927ad4c1a84da7f891bb89185" />
Sebbene lo stato di visualizzazione (View State) di ASP.NET possa essere memorizzato sul server web, non è la soluzione ideale quando l'applicazione ASP.NET è in esecuzione in un cluster di server con bilanciamento del carico, poiché la successiva richiesta HTTP potrebbe essere indirizzata a un altro server web. Pertanto, è necessario memorizzare lo stato di visualizzazione (View State) di ASP.NET in un archivio condiviso accessibile da tutti i server web.
Il posto migliore per memorizzare ASP.NET View State sul server è in un cache distribuita. In questo modo, non solo puoi avere un negozio comune per tutti i server web, ma hai anche un estremamente negozio in-memory veloce e scalabile rispetto al database di SQL Server o ad altre opzioni di archiviazione.
NCache è una cache distribuita estremamente veloce e scalabile per .NET, Java, Python e Node.js. Consente inoltre di memorizzare Stato della vista ASP.NET per risolvere i problemi sopra descritti.
Per configurare ASP.NET View State, è necessario installare il AspNet.ViewState.NCache Pacchetto NuGet come prerequisito. Quindi è necessario configurare il app_browser file con NCache Collegare gli adattatori di pagina. Successivamente, è necessario configurare il file web.config nell'applicazione per registrare lo stato di visualizzazione per la configurazione e specificare le impostazioni per la sezione di configurazione registrata in precedenza. Fare riferimento a NCache Documentazione relativa allo stato di visualizzazione di ASP.NET per la configurazione passo passo.
Se la stessa cache viene utilizzata per la memorizzazione nella cache dello stato di visualizzazione e altri dati, puoi farlo recuperare i dati dello stato di visualizzazione utilizzando il tag NC_ASP.net_viewstate_data come:
Hashtable allViewStateData = cache.SearchService.GetByTag(new Tag("NC_ASP.net_viewstate_data"));
Si ottengono i seguenti vantaggi memorizzando nella cache lo stato della vista ASP.NET NCache.
NCache Offre una ricca serie di funzionalità per la memorizzazione nella cache e la gestione dello stato della vista ASP.NET. Di seguito è riportato un elenco di tali funzionalità.
Come hai visto NCache Consente di memorizzare nella cache lo stato di visualizzazione ASP.NET sul server per ottimizzare le prestazioni di ASP.NET. Offre inoltre un ricco set di funzionalità per gestire lo stato di visualizzazione ASP.NET nella cache in modo più efficiente. Ciò consente di sviluppare applicazioni complesse e di utilizzare queste funzionalità per gestire diversi scenari.
© Copyright Alachisoft 2002 - . Tutti i diritti riservati. NCache è un marchio registrato di Diyatech Corp.