Elaborazione delle pagine Web Form

In generale, il ciclo di vita di una pagina Web Form è simile a quello di qualsiasi processo Web eseguito sul server. Determinate caratteristiche dell'elaborazione Web, tra cui la trasmissione di informazioni attraverso il protocollo HTTP, l'assenza di informazioni sullo stato nelle pagine Web e così via, si applicano alle pagine Web Form così come alla maggior parte delle applicazioni Web.

Il framework di pagine ASP.NET, tuttavia, esegue automaticamente la maggior parte dei servizi delle applicazioni Web. Acquisisce, ad esempio, le informazioni inviate con la pagina Web Form, estrae i valori rilevanti e rende accessibili le informazioni mediante le proprietà degli oggetti.

È importante comprendere la sequenza degli eventi generati durante l'elaborazione di una pagina Web Form, per consentire una programmazione più efficiente delle pagine Web Form e delle applicazioni Web.

Ciclo di vita di una pagina Web Form

Prima di esaminare i dettagli relativi al contenuto di una pagina quando viene elaborata, è opportuno approfondire alcune caratteristiche fondamentali del funzionamento delle pagine Web Form nelle applicazioni Web.

Percorsi di andata e ritorno

Uno degli aspetti più importanti da comprendere è rappresentato dalla divisione del lavoro in una pagina Web Form. Il browser visualizza all'utente un form con cui l'utente interagisce, causando il postback del form al server. Poiché è necessario che l'intero processo di elaborazione che interagisce con i componenti server si verifichi sul server, per ciascuna azione che richiede l'elaborazione il form deve essere inviato al server, elaborato e restituito al browser. Questa sequenza di eventi viene definita percorso di andata e ritorno.

Nota  ** **Lo script client può essere creato nei Web Form. Questa operazione si rivela utile per la convalida dell'input dell'utente e per alcuni tipi di programmazione dell'interfaccia utente. Lo script client non interagisce con i componenti server.

Si consideri uno scenario aziendale: un utente inserisce un ordine ed è necessario verificare che le scorte disponibili per tale ordine siano sufficienti. La pagina verrà quindi inviata al server in un momento appropriato del processo di inserimento dell'ordine da parte dell'utente. Un processo del server esamina l'ordine, esegue una ricerca nell'inventario, effettua probabilmente alcune operazioni definite nella logica aziendale, come la modifica della pagina per indicare un errore, quindi restituisce la pagina al browser per consentire all'utente di procedere.

Percorso di andata e ritorno

Nei Web Form, la maggior parte delle operazioni dell'utente, quali il clic su un pulsante, genera un percorso di andata e ritorno. Per questo motivo, gli eventi disponibili nei controlli server ASP.NET vengono in genere limitati agli eventi Click. La maggior parte dei controlli server espone un evento Click che richiede un'azione esplicita dell'utente.

Per la stessa ragione, i controlli server non espongono eventi ad alta frequenza, quale onmouseover, in quanto ogni volta che un evento di questo tipo viene generato, viene effettuato un altro percorso di andata e ritorno al server, con effetti considerevoli sul tempo di risposta nel form.

Ricreazione della pagina (stato di visualizzazione e gestione dello stato)

In qualsiasi scenario Web le pagine vengono ricreate a ogni percorso di andata e ritorno. Appena vengono completati l'elaborazione e l'invio della pagina al browser, il server elimina le informazioni sulla pagina. Liberando le risorse server dopo ogni richiesta, è possibile rendere scalabile un'applicazione Web per il supporto di centinaia o migliaia di utenti simultanei. Al successivo invio della pagina, il server comincia a crearla ed elaborarla nuovamente. Per questa ragione, le pagine Web vengono definite pagine senza informazioni sullo stato, ovvero i ** valori delle variabili e dei controlli di una pagina non vengono mantenuti sul server.

Nota   È possibile configurare il server per la memorizzazione delle informazioni sulla pagina nella cache al fine di ottimizzare le pagine, ma per consentire una programmazione efficace delle applicazioni, si consiglia di eliminarle non appena il server ne completa l'elaborazione.

In un'applicazione Web tradizionale le uniche informazioni di cui il server dispone in relazione a un form sono le informazioni aggiunte dall'utente ai controlli del form, in quanto tali informazioni vengono inviate al server all'invio del form. Altre informazioni, quali le impostazioni delle proprietà e dei valori delle variabili, vengono eliminate.

In ASP.NET si cerca di ovviare a queste limitazioni nei seguenti modi:

  • Salvando le proprietà delle pagine e dei controlli durante i percorsi di andata e ritorno. Questa operazione viene definita salvataggio dello stato di visualizzazione del controllo*.*
  • Fornendo funzionalità di gestione dello stato in modo da consentire il salvataggio delle proprie variabili e delle informazioni specifiche delle applicazioni o delle sessioni tra i percorsi di andata e ritorno.
  • Rilevando il momento in cui un form viene richiesto per la prima volta e il momento in cui il form viene inviato, in modo da consentire una programmazione appropriata. È possibile che si desideri un comportamento differente durante il postback di una pagina rispetto a una richiesta iniziale.

Vantaggi di un modello basato su eventi rispetto a un modello di elaborazione lineare

Se si è acquisita una certa esperienza nell'utilizzo delle pagine ASP (Active Server Pages), si è in grado di riconoscere che le pagine ASP rappresentano un modello di elaborazione lineare. Una pagina ASP viene elaborata in sequenza dall'alto verso il basso. Ciascuna riga di codice ASP e HTML statico viene elaborata in sequenza, così come viene visualizzata nel file. Le operazioni dell'utente causano l'invio della pagina al server in un percorso di andata e ritorno. Poiché queste operazioni generano un percorso di andata e ritorno, è necessario che il server crei nuovamente la pagina. Una volta ricreata, la pagina viene quindi elaborata nella sequenza dall'alto verso il basso come in precedenza e, pertanto, non presenta un comportamento effettivamente basato su eventi. Per creare un modello basato su eventi, è necessario progettarlo in modo esplicito. È inoltre necessario gestire lo stato dei controlli e delle pagine in modo esplicito al livello di base. Questo modello limita l'ampiezza delle interfacce utente che possono essere realizzate e aumenta la complessità del codice necessario per supportarlo.

Un modello basato su eventi, come in un'applicazione Visual Basic tradizionale, contiene elementi programmabili inizializzati e visualizzati nel form. Gli utenti interagiscono con gli elementi causando la generazione di eventi che, a propria volta, chiamano i gestori eventi. Questo modello supporta un reale comportamento basato su eventi, che, in base alla relativa progettazione, estende in larga misura l'efficienza delle interfacce utente che possono essere assemblate e riduce la complessità del codice necessario per supportarlo.

In ASP.NET viene sostituito il modello di elaborazione lineare di ASP emulando il comportamento di un modello basato su eventi. Il framework di pagine ASP.NET viene fornito per consentire automaticamente l'associazione implicita di un evento a un gestore eventi. L'utilizzo del framework di pagine consente di creare in modo semplice un'interfaccia utente in grado di rispondere alle azioni di un utente. Per informazioni dettagliate sulla creazione e sull'utilizzo di eventi e gestori eventi, vedere Gestione di eventi server nelle pagine Web Form.

Questo framework semplifica inoltre l'implementazione della gestione dello stato dei controlli e delle pagine. Per ulteriori informazioni sulla gestione dello stato, vedere Gestione dello stato in Web Form.

ASP.NET consente ad esempio di impostare i gestori eventi nel codice server per gli eventi passati dal browser. Si supponga che l'utente interagisca con una pagina Web Form contenente un controllo server Button. L'utente fa clic sul controllo e viene generato un evento che viene trasmesso mediante un HTTP Post al server, in cui il framework di pagine ASP.NET interpreta le informazioni inviate e associa l'evento generato al gestore eventi appropriato. Questo gestore eventi può essere un gestore predefinito fornito da ASP.NET oppure un'implementazione personalizzata dello sviluppatore. Durante la normale elaborazione, il framework chiama automaticamente il gestore eventi appropriato per il pulsante. Di conseguenza, non è più necessario progettare in modo esplicito il comportamento di tipo evento in un modello di elaborazione lineare. Per ulteriori informazioni sulla gestione degli eventi di Web Form, vedere Modello di eventi dei controlli server ASP.NET.

Fasi nell'elaborazione di Web Form

Nel framework di pagine ASP.NET le pagine Web Form vengono elaborate in fasi distinte. Durante ciascuna fase dell'elaborazione di Web Form, è possibile che vengano generati degli eventi e che venga eseguito un gestore eventi corrispondente all'evento. Questi metodi forniscono i punti di ingresso (hook) che consentono di aggiornare il contenuto della pagina Web Form.

Nella tabella riportata di seguito sono elencate le fasi più comuni dell'elaborazione delle pagine, gli eventi generati durante queste fasi e gli utilizzi tipici in ciascuna fase. Queste fasi vengono ripetute ogni volta che il form viene richiesto o inviato. La proprietà Page.IsPostBack consente di verificare se la pagina viene elaborata per la prima volta.

Nota   Esiste un numero maggiore di fasi dell'elaborazione delle pagine Web Form rispetto a quelle elencate nella tabella che segue. Queste fasi non vengono tuttavia utilizzate per la maggior parte degli scenari di elaborazione, ma vengono utilizzate principalmente dai controlli server della pagina Web Form per inizializzare ed eseguire il rendering di se stessi. Se si intende scrivere controlli server ASP.NET personalizzati, è necessario comprendere a fondo queste fasi. Per informazioni dettagliate sull'insieme completo delle fasi dell'elaborazione, vedere Sviluppo di controlli server ASP.NET.

Fase Significato Utilizzi tipici
Inizializzazione del framework di pagine ASP.NET Viene generato l'evento Page_Init della pagina e viene ripristinato lo stato di visualizzazione dei controlli e delle pagine. Durante questo evento, nel framework di pagine ASP.NET vengono ripristinati i dati di postback e le proprietà dei controlli.
Inizializzazione del codice dell'utente Viene generato l'evento Page_Load della pagina. Leggere e ripristinare i valori memorizzati in precedenza:
  • Mediante la proprietà Page.IsPostBack, verificare se la pagina viene elaborata per la prima volta.
  • Se la pagina viene elaborata per la prima volta, effettuare l'associazione dati iniziale.
  • In caso contrario, ripristinare i valori dei controlli.
  • Leggere e aggiornare le proprietà dei controlli.
Convalida Il metodo Validate dei controlli server Web di convalida viene chiamato per eseguire la convalida specificata. Non vi è alcun hook dell'utente in questa fase. È possibile verificare il risultato della convalida in un gestore eventi.
Gestione degli eventi Se la pagina è stata chiamata in risposta all'evento di un form, durante questa fase verrà chiamato il gestore eventi corrispondente nella pagina. Effettuare l'elaborazione specifica dell'applicazione:
  • Gestire lo specifico evento generato.

    Nota   Gli eventi non vengono generati in un particolare ordine, a eccezione del fatto che gli eventi dei controlli memorizzati nella cache vengono sempre elaborati prima dell'evento di invio, come specificato dalla proprietà AutoPostBack del controllo.
  • Se la pagina contiene tipi di convalida per controlli ASP.NET lato server, verificare la proprietà IsValid della pagina e dei singoli controlli di convalida.
  • Salvare manualmente lo stato delle variabili della pagina gestito autonomamente.
  • Verificare la proprietà IsValid della pagina o dei singoli controlli di convalida.
  • Salvare manualmente lo stato dei controlli aggiunti in modo dinamico alla pagina.
Pulitura Viene chiamato l'evento Page_Unload in quanto la pagina ha terminato il rendering ed è pronta per essere eliminata. Eseguire le attività di pulitura finali:
  • Chiusura dei file.
  • Chiusura delle connessioni ai database.
  • Eliminazione degli oggetti.

    Nota   È importante che le risorse dispendiose, quali le connessioni ai database, vengano chiuse in modo esplicito. In caso contrario, resteranno aperte fino a quando non viene eseguita la successiva operazione di Garbage Collection. In un server con un elevato carico di lavoro è possibile che le risorse aperte influiscano negativamente sulle prestazioni.

Vedere anche

Introduzione alla convalida dell'input dell'utente nei Web Form | Accesso ai dati nelle pagine Web Form | Modello di eventi dei controlli server ASP.NET | Introduzione alla gestione dello stato dei Web Form | Gestione dello stato di ASP.NET | Pagine Web Form