Uno sguardo alle tecniche di gestione dello stato offerte da ASP.NET

0

C'è un vincolo comune che può essere osservato nel funzionamento di quasi tutte le applicazioni web, che si aggiunge al loro comportamento stateless. È la connessione intermittente tra il Server e il Client.

Ciò che accade è che, durante l'implementazione dell'HTTP (Hyper Text Transfer Protocol) per la comunicazione sul Web, viene seguito un modello particolare noto come richiesta e risposta. Questo modello è in realtà di natura senza stato in quanto non conserva lo stato di alcuna richiesta o la risposta corrispondente. Pertanto, ogni volta che un client avvia una richiesta al server Web, il server Web crea un oggetto della richiesta completamente nuovo. Ciò alla fine provoca l'interruzione della connessione e crea colli di bottiglia nelle prestazioni.

Fortunatamente, ASP.NET offre un'ottima soluzione per superare questo problema con diverse efficaci tecniche di gestione dello stato per le applicazioni web.

Riflettiamo sulle straordinarie offerte di ASP.NET e comprendiamo come aiuta a mantenere lo stato dei controlli.

È stato osservato che quando il modello di richiesta e risposta crea i round trip, il valore del controllo del server viene in qualche modo venduto al dettaglio mentre il valore del controllo HTML viene annullato. Questo perché i Sever Controls implementano implicitamente la tecnica di State Management (View State), che gli ha permesso di mantenere gli stati.

ASP.NET offre una serie di brillanti metodi di gestione dello stato, tutti pensati per diverse applicazioni. Sono sostanzialmente segregati in due grandi categorie, ovvero la gestione dello stato basata su client e la gestione dello stato basata su server. Ecco una breve introduzione a diverse tecniche.

Gestione dello stato basata su client

In questo approccio i dati vengono archiviati sulla macchina del client o sulla pagina senza coinvolgere le risorse del server. Questi dati memorizzati includono tutte le informazioni relative all'interazione tra il client e il server. Poiché i dati vengono archiviati alla fine del client, sono più vulnerabili agli attacchi hacker, rendendo così le tecniche meno sicure e più scalabili.

Con questo approccio, ASP.NET facilita i metodi indicati di seguito:

1) Visualizza stato:

Questo metodo a livello di pagina aiuta a memorizzare le informazioni su una particolare pagina fino a quando non è attiva. Cioè, non appena l'utente reindirizza a un'altra pagina, tutte le informazioni memorizzate scompariranno. Aiuta quindi a mantenere lo stato a livello di pagina. In questa tecnica, i dati vengono archiviati nel modulo Dictionary Object (nella coppia di chiave e valore). Tutte le informazioni sono memorizzate in un formato con hash sulla pagina stessa, ma all'interno di un campo nascosto. Può consumare un valore stringa ma solo fino a un certo, se il valore supera, viene consumato un altro campo nascosto.

Con ASP.NET, lo stato di visualizzazione è il metodo predefinito seguito per l'archiviazione dello stato per le applicazioni Web. È abbastanza semplice da implementare ed è ideale per l'uso quando un utente viene reindirizzato alla stessa pagina, quindi dobbiamo mantenere le informazioni persistenti fino a quando lui stesso reindirizza a qualche altra pagina.

Vantaggi dell'utilizzo dello stato di visualizzazione:

  • Proteggi le informazioni memorizzate dai profani memorizzandole nel formato con hash. Infatti per tenerlo al sicuro dagli hacker, puoi conservare le informazioni in un formato crittografato.
  • Puoi personalizzarlo come e quando lo desideri.
  • È un'ottima opzione in cui si desidera implementare più postback all'interno di una singola pagina Web.

Contro dell'utilizzo dello stato di visualizzazione:

  • Non è un approccio sicuro, quindi i dati sensibili non possono essere archiviati con esso.
  • Può causare problemi di sovraccarico o aumentare il tempo di caricamento, rendendo la pagina pesante con molte informazioni.
2) Cookie:

Offre una grande facilità di personalizzazione da parte del cliente, poiché i cookie vengono archiviati nella memoria durante la sessione del browser del cliente o nel sistema del cliente. Infatti, si possono persino memorizzare le informazioni relative agli utenti e tracciarne l'utilizzo. Possiede un piccolo file di testo con una dimensione massima di 4096 byte e una macchina client può presentare un massimo di 300 cookie, mentre un dominio o un server può supportare un massimo di 20 cookie.

I cookie sono ulteriormente suddivisi in due categorie, vale a dire:

Cookie persistenti – Questo tipo di cookie presenta una data di scadenza e viene salvato in modo permanente sul disco rigido disponibile sulla macchina del cliente. Se non esiste una data di scadenza corrispondente al cookie persistente, sarà considerato un cookie transitorio o non persistente.

Cookie non persistenti o cookie transitori – Poiché questo tipo di cookie viene memorizzato nella memoria del browser alla fine del client per un periodo di tempo temporaneo, dopo quel tempo specifico il cookie andrà perso.

Vantaggi dell'utilizzo dei cookie:

  • Consuma solo pochi byte di memoria per cookie.
  • Facile e abbastanza semplice da usare.

Contro dell'utilizzo dei cookie:

  • Non offre un approccio sicuro in quanto memorizza le informazioni nella macchina del cliente e quindi l'archiviazione di dati sensibili non è una scelta praticabile.
  • Qualsiasi utente può disabilitare i cookie apportando le opportune modifiche alle impostazioni del browser.
3) Campi nascosti:

Questo è fondamentalmente un controllo server, che aiuta a gestire il valore a livello di pagina ed è un po' simile a uno stato di visualizzazione. Il suo valore viene inviato tramite HTTP Form Collection e insieme ad esso viene inviato anche il valore di altri controlli.

Vantaggi dell'utilizzo di Hidden Fields:

  • È abbastanza semplice da usare.
  • Poiché il valore è memorizzato solo sulla pagina, le risorse del server non vengono utilizzate affatto. Pertanto, Hidden Fields salva le risorse del server.

Contro dell'utilizzo dei campi nascosti:

  • Se diversi campi nascosti verranno implementati su una pagina, alla fine aggiungeranno peso alla pagina e la renderanno più voluminosa e quindi aumenteranno il tempo di caricamento della pagina.
  • Questo approccio non è ideale per archiviare i dati sensibili. Poiché non memorizza i dati in un formato crittografato o con hash, questa tecnica non è del tutto sicura.
4 Stato dell'applicazione:

Questo stato è perfetto per archiviare i dati a cui è necessario accedere in tutta l'applicazione. Occupa le risorse del server, poiché memorizza i dati nella memoria del server. Lo stato dell'applicazione non è limitato a un particolare utente o sessione, ma è applicabile a tutte le sessioni e gli utenti. Tuttavia, in questo caso i dati verranno conservati solo per il tempo in cui l'applicazione è in esecuzione, non appena l'applicazione verrà terminata o riavviata, tutti i dati memorizzati andranno persi. In effetti, verrà sprecato anche quando un server Web verrà riavviato, poiché i dati vengono nascosti alla fine del server.

Nello stato dell'applicazione, un oggetto della classe HttpApplicationState viene utilizzato per archiviare i dati. Questa classe è una raccolta di oggetti con nome, il che significa che include i dati di qualsiasi tipo. Potrebbe far parte di una coppia chiave/valore.

Vantaggi dello stato dell'applicazione:

  • Lo stato dell'applicazione ha un ambito globale. È possibile accedere ai dati in qualsiasi momento quando l'applicazione è in esecuzione.
  • Non c'è alcun periodo di scadenza per impostazione predefinita.

Contro dello stato dell'applicazione:

  • Lo stato dell'applicazione richiede risorse del server per archiviare i dati. Questo può portare a problemi di scalabilità se non gestito correttamente.
  • Lo stato dell'applicazione non è thread-safe, quindi è necessario implementare i blocchi.
  • In caso di errore o riavvio dell'applicazione, tutti i dati memorizzati vengono persi.
5 Stato della sessione:

Questo metodo è più comunemente utilizzato da diversi sviluppatori per mantenere lo stato dell'applicazione. In questo approccio, il valore viene archiviato sotto forma di raccolta di dizionari, ovvero viene accoppiato come chiave e valore. Qui le risorse del server sono interamente utilizzate per memorizzare lo stato dell'applicazione. Poiché l'archivio non viene trasferito ai client, questa tecnica offre un metodo sicuro e altamente protetto.

In questo approccio, viene generata una sessione separata con un ID univoco per ciascun utente. Poiché questo ID viene salvato sul sistema del cliente, i cookie vengono utilizzati per la sua memorizzazione. La sessione viene terminata non appena l'utente si disconnette dall'applicazione e, se torna all'applicazione in futuro, viene creata una nuova sessione.

Può essere utilizzato in una qualsiasi delle quattro modalità. Ecco le modalità:

  • OFF – Per disattivare la sessione, ovvero se non sei interessato ad includere lo stato della sessione nella tua applicazione, puoi impostare la modalità OFF.
  • InProc: le variabili di sessione vengono archiviate in questa modalità per impostazione predefinita. In questo caso, il valore viene archiviato nello stesso processo in cui l'applicazione ASP.NET è effettivamente in esecuzione. Offre quindi prestazioni eccezionali.
  • State Server: in questa modalità, i dati vengono archiviati in un processo separato all'interno del servizio Windows. Isola così i due processi, uno in cui è in esecuzione l'applicazione e il secondo in cui sono archiviati i dati. Pertanto, le sue prestazioni non sono buone come quelle della modalità InProc.
  • SQL Server: qui i dati della sessione vengono archiviati in SQL Server. È difficile da gestire in modalità InProc con più macchine server. Per questo, è meglio archiviare i dati solo nel server SQL, renderà i dati accessibili centralmente a tutte le macchine. Questa modalità offre la massima sicurezza, tuttavia, offre prestazioni ridotte.

Queste cinque sono le tecniche di gestione dello stato più comunemente utilizzate per le applicazioni ASP.NET. Integra quella tecnica nella tua applicazione che può garantire la completa sicurezza dei dati e prestazioni veloci.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More