HowTo – Guida ASP.NET (Parte 4)


PARTE 2 – CAPITOLO 4 – La Gestione dello Stato

Come già ampiamente introdotto, HTML non offre alcun meccanismo per il mantenimento dello stato. I linguaggi Server Side vengono in aiuto dello sviluppatore proponendo le proprie soluzioni per colmare questa mancanza.
ASP.NET mette a disposizione diverse tecniche per mantenere traccia dello stato di una pagina internet. Alcuni di questi meccanismi (come il ViewState) sono già stati introdotti, altri sono probabilmente già noti perché universalmente utilizzati. Segue una lista di tutte le possibilità a disposizione del programmatore con una breve descrizione per ciascuna di esse.
VIEWSTATE
Il ViewState, come già anticipato, è una dictionary collection (valida solo all’interno della pagina corrente) con comportamento di sovrascrizione in caso di dati già presenti. Quando si salva un dato nel ViewState viene automaticamente generato un dato di tipo Object. Sarà quindi necessario operare un opportuno Cast quando lo si vuole utilizzare di nuovo.
Se si vuole usare il ViewState con oggetti Custom va aggiunta la direttiva [Serializable] prima della dichiarazione della classe. Se all’interno della classe sono definite proprietà non serialzzabili vanno caratterizzate dalla direttiva NonSerialized e verranno ignorate (torneranno cioè allo stato originale dopo ogni Postback).
QUERYSTRING
La QueryString è semplicemente l’insieme dei parametri che vengono passati ad una pagina al momento del suo caricamento.
Essendo di fatto un indirizzo URL in essa possono essere inseriti solo caratteri html validi (o opportunamente trattati con l’oggetto Server.HtmlEncode).
Per accedere ad un oggetto contenuto nella QueryString basta usare il comando Response.QueryString[“attributo”]. Prima di utilizzare un dato ottenuto in questo modo occorre sempre verificare che sia diverso da null e che sia valido nel contesto di utilizzo.
PostBackUrl permette di trasmettere i dati da una pagina all’altra con l’utilizzo della QueryString (Cross Page Postback). Nella pagina “di arrivo”, con lo statement Page.PreviousPage, controllo se effettivamente la navigazione proviene da un’altra pagina. Nella pagina padre i controlli sono protected. Devo dichiarare, come già visto per gli User Control, un metodo pubblico che espone il dato (tipicamente con un get { return …}).
Un metodo alternativo per muoversi all’interno dell’applicazione è utilizzando Server.Transfer(“nuovo indirizzo”). È possibile riconoscere un Cross Page Postback grazie a PreviousPage.IsCrossPagePostBack.
Se nella pagina di origine erano presenti validatori occorre verificare se sono stati eseguiti o meno con il comando PreviousPage.IsValid.
COOKIE
Il funzionamento dei Cookie è universalmente noto: si tratta di piccolissimi file di testo creati da una applicazione web sul computer dell’utente molto utili per memorizzare le sue preferenze di navigazione.
In ASP.NET è possibile impostare (e leggere) il valore di un Cookie con i comandi Request e Response. Occorre includere il file System.Net.
SESSION STATE
L’oggetto Session State è molto simile al ViewState ma molto più potente e versatile (ad esempio è utilizzabile con tutti i tipi di oggetto). Tuttavia il suo utilizzo non è molto diffuso per via dell’eccessivo carico che porta sul Server.
APPLICATION STATE
Le Application State sono Session non limitate al singolo utente ma all’intera applicazione. È utile usare i lock per evitare concorrenza sulle risorse e richiamare l’unlock quando la modifica è finita in modo da rilasciare l’oggetto e permettere altre modifiche.

[Omnia / Luca Zaccaro]


Una risposta a “HowTo – Guida ASP.NET (Parte 4)”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *