Visualizza la memorizzazione nella cache dello stato per l'ottimizzazione delle prestazioni di ASP.NET

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.

  1. Lo stato View di ASP.NET è spesso pesante: Quando un'applicazione ASP.NET presenta molti controlli e widget complessi e pesanti sulle sue pagine, una grande quantità di dati viaggia avanti e indietro tra il browser e il server web. Questo carico pesante si traduce in un degrado delle prestazioni dell'applicazione ASP.NET e in un elevato consumo di larghezza di banda.
  2. ASP.NET View State presenta rischi per la sicurezza: L'invio di dati riservati come parte dello stato di visualizzazione al client può inoltre rappresentare un rischio per la sicurezza. Questi dati sono vulnerabili agli attacchi e gli aggressori possono manometterli. È possibile crittografare i dati dello stato di visualizzazione di ASP.NET, ma anche questo comporterà un costo in termini di prestazioni.

NCache per ASP.NET View State

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.

Cache distribuita per l'archiviazione dello stato della vista ASP.NET - NCache
Figura 1: Cache distribuita per la memorizzazione dello stato della vista ASP.NET

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.

Configurare lo stato della vista ASP.NET in NCache

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"));

Vantaggi della memorizzazione nella cache dello stato della vista ASP.NET sul server

Si ottengono i seguenti vantaggi memorizzando nella cache lo stato della vista ASP.NET NCache.

  1. Migliora le prestazioni di ASP.NET: NCache riduce il carico utile della richiesta/risposta migliorando il tempo complessivo della richiesta.
  2. Ridurre il costo della larghezza di banda: Carichi utili più piccoli comportano anche una significativa riduzione dei costi di consumo di banda, con un conseguente risparmio notevole.
  3. Sicurezza: Ora che la stringa codificata dello stato di visualizzazione di ASP.NET non viene più inviata al browser, non sussistono più rischi per la sicurezza.
  4. Archiviazione dello stato della vista ASP.NET veloce e scalabile: NCache è una cache distribuita estremamente veloce e scalabile. Ciò significa che ASP.NET non si trova mai ad affrontare colli di bottiglia di scalabilità dovuti all'archiviazione dello stato della vista di ASP.NET.
  5. Affidabilità dello stato di visualizzazione ASP.NET tramite replica: NCache Replica in modo intelligente tutti i dati nella cache distribuita. Ciò significa che non si perde alcun View State di ASP.NET anche se un server di cache si arresta.

Funzionalità avanzate di memorizzazione nella cache dello stato della vista ASP.NET in 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à.

  1. Soglia dimensione minima: NCache consente di specificare una dimensione minima dello stato della vista ASP.NET, ovvero soglia dello stato di visualizzazione. Qualsiasi stato di visualizzazione inferiore a questo non viene memorizzato nella cache. Ciò consente di memorizzare nella cache solo lo stato di visualizzazione pesante.
  2. Collegare lo stato della vista ASP.NET con lo stato della sessione: È possibile collegare uno stato di visualizzazione ASP.NET con lo stato della sessione (expireViewstateWithSession). In questo modo, quando scade la sessione utente, tutti gli stati di visualizzazione vengono automaticamente rimossi dalla cache.
  3. Soglia di conteggio massimo a livello di pagina: È possibile configurare quanti stati di visualizzazione conservare per una determinata pagina utilizzando il metodo FIFO. In questo modo, lo stato di visualizzazione più vecchio viene rimosso ogni volta che viene creato un nuovo stato di visualizzazione per questa pagina. Ciò ottimizza il consumo di memoria nel server cache evitando l'archiviazione di stati di visualizzazione non necessari.
  4. Soglia di conteggio massimo a livello di sessione: Simile al livello di pagina, è possibile specificare il conteggio massimo dello stato di visualizzazione per una sessione utente in modalità FIFO con maxViewstatesPerSession. In questo modo, lo stato di visualizzazione meno recente viene rimosso ogni volta che viene creato un nuovo stato di visualizzazione.
  5. Impostazioni a livello di pagina e di sessione: Puoi specificare tutte le impostazioni precedenti in modo diverso per ciascuna pagina o mantenerle comuni a tutte le sessioni.

Sintesi

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.

Cosa fare dopo?

© Copyright Alachisoft 2002 - . Tutti i diritti riservati. NCache è un marchio registrato di Diyatech Corp.