Introduzione alle pagine Web ASP.NET
Aggiornamento: novembre 2007
Le pagine Web ASP.NET consentono di creare contenuto dinamico per il sito Web. Con una pagina HTML statica (file HTM o HTML), il server soddisfa una richiesta Web leggendo il file e inviandolo così com'è al browser. Al contrario, quando viene richiesta una pagina Web ASP.NET (file ASPX), la pagina in questione viene eseguita come un programma sul server Web. Durante l'esecuzione della pagina, può essere eseguita qualsiasi altra attività il sito Web richieda, inclusi il calcolo di valori, la lettura o la scrittura di informazioni del database o la chiamata di altri programmi. L'output generato dinamicamente dalla pagina è costituito da codice (elementi in HTML o un altro linguaggio markup) che vengono inviati al browser.
In questo argomento viene fornita una panoramica delle caratteristiche principali della modalità di funzionamento delle pagine Web ASP.NET nelle applicazioni Web.
Postback e round trip
Le pagine ASP.NET vengono eseguite come codice sul server. Quindi, perché possa essere eseguita, la pagina è configurata per essere inoltrata al server quando gli utenti fanno clic sui pulsanti o, facoltativamente, quando selezionano caselle di controllo o interagiscono con altri controlli nella pagina. La pagina viene quindi sottoposta a postback, in modo che possa essere nuovamente eseguito il codice server e il rendering di una nuova versione della pagina per l'utente.
Il ciclo di elaborazione di una pagina Web ASP.NET è il seguente:
L'utente richiede la pagina La pagina viene richiesta con un metodo HTTP GET. La pagina viene eseguita per la prima volta con un'elaborazione preliminare, se programmata.
La pagina esegue dinamicamente nel browser il rendering del markup per far sì che questo possa essere visualizzato dall'utente come una pagina Web simile a qualsiasi altra pagina.
L'utente digita informazioni o seleziona una delle opzioni disponibili e quindi fa clic su un pulsante. Se l'utente fa clic su un collegamento invece che su un pulsante, viene semplicemente visualizzata un'altra pagina e non viene eseguita alcuna ulteriore elaborazione sulla prima pagina.
La pagina viene inviata al server Web Nel browser viene eseguito un metodo POST HTTP che, in ASP.NET, viene definito postback. In particolare, la pagina viene sottoposta a postback. Se, ad esempio, l'utente sta utilizzando la pagina Default.aspx e fa clic su un pulsante, verrà eseguito il postback della pagina al server con destinazione Default.aspx.
Sul server Web la pagina viene nuovamente eseguita. A questo punto sulla pagina saranno disponibili le informazioni digitate o selezionate dall'utente.
Nella pagina viene eseguita l'elaborazione programmata.
Viene quindi eseguito il rendering della pagina nel browser.
Questo ciclo continua fino a quando l'utente utilizza la pagina. Ogni volta che l'utente fa clic su un pulsante, le informazioni presenti nella pagina vengono inviate al server Web e la pagina viene nuovamente eseguita. Ogni ciclo viene definito round trip. Poiché l'elaborazione della pagina avviene sul server Web, ogni azione eseguibile sulla pagina richiede un round trip al server.
Nota: |
---|
In una pagina Web ASP.NET può essere eseguito uno script client, che non richiede un round trip al server e risulta utile per la convalida dell'input utente e per alcuni tipi di programmazione dell'interfaccia utente. Per ulteriori informazioni, vedere la classe Script client nelle pagine Web ASP.NET. |
Cross-page posting
In alcune circostanze può essere opportuno che una pagina invii informazioni a un'altra pagina e non a se stessa. Questo processo viene definito cross-page posting. Ad esempio, si consideri il caso di una serie di pagine create per elaborare l'ordine di un cliente. Ogni pagina può inviare informazioni alla pagina successiva della sequenza. Per ulteriori informazioni, vedere Cross-page posting nelle pagine Web ASP.NET.
Durata delle pagine
A differenza dei form nelle applicazioni desktop, una pagina Web ASP.NET non viene avviata, viene eseguita mentre l'utente utilizza il form e quindi scaricata solo quando l'utente fa clic sul pulsante di chiusura, questo perché il Web è intrinsecamente disconnesso. Quando un browser richiede una pagina da un server Web, il browser e il server vengono connessi solo per la durata dell'elaborazione della richiesta. Una volta eseguito il rendering della pagina nel browser, la connessione viene interrotta. Se il browser invia un'altra richiesta allo stesso server Web, questa richiesta viene elaborata come una nuova richiesta anche se riguarda la stessa pagina.
Il fatto che il Web sia intrinsecamente disconnesso determina la modalità di esecuzione delle pagine ASP.NET. Quando un utente richiede una pagina Web ASP.NET, viene creata una nuova istanza della pagina. Dopo l'elaborazione e il rendering del markup nel browser, la pagina viene eliminata. Se l'utente fa clic su un pulsante per eseguire un postback, viene creata una nuova istanza della pagina, eseguita l'elaborazione ed eliminata la pagina. Quindi, ogni ciclo di postback e round trip produce una nuova istanza della pagina.
Per ulteriori informazioni, vedere Creazione di pagine Web ASP.NET.
Conservazione dello stato delle pagine
Nel tradizionale protocollo HTTP le uniche informazioni su una pagina a disposizione del server sono quelle specificate dall'utente mediante i controlli della pagina, in quanto il browser fornisce al server solo queste informazioni all'invio della pagina. Altre informazioni, quali le impostazioni delle proprietà e dei valori delle variabili, vengono eliminate. ASP.NET consente di conservare altre informazioni sulla pagina nei seguenti modi:
Viene fornita una funzione per il salvataggio dello stato dei controlli che consente di salvare le impostazioni dei controlli (proprietà) tra i round trip.
Vengono fornite funzionalità di gestione dello stato che consentono di salvare le informazioni sulle variabili e le informazioni specifiche delle applicazioni o delle sessioni tra i diversi round trip.
ASP.NET è in grado di rilevare il momento in cui una pagina viene richiesta per la prima volta e il momento in cui viene inviata, in modo da consentire una programmazione appropriata. Si supponga, ad esempio, di voler leggere informazioni di un database alla prima visualizzazione della pagina ma non in occasione di ogni postback.
Nota: È possibile configurare il server per la memorizzazione nella cache delle informazioni sulle pagine al fine di ottimizzare le pagine, ma, per consentire una programmazione efficace delle applicazioni, si consiglia di eliminare le pagine non appena il server ne completa l'elaborazione.
Per ulteriori informazioni, vedere Cenni preliminari sulla gestione dello stato ASP.NET.
Programmazione di pagine Web ASP.NET
Per la creazione del codice server delle pagine Web ASP.NET, in .NET Framework sono disponibili diversi linguaggi, tra cui Visual Basic, C# e J#. Le pagine Web ASP.NET possono contenere uno script client che viene eseguito nel browser. Alcune funzioni ASP.NET generano uno script client e lo immettono nella pagina. In tal caso, in ASP.NET viene sempre generato lo script ECMAScript (JavaScript) per migliorare la compatibilità dell'applicazione con i diversi browser. È inoltre possibile aggiungere un proprio script client per personalizzare le funzionalità. In tal caso è possibile utilizzare qualsiasi linguaggio script client compatibile con i browser di destinazione.
Controlli server
Come qualsiasi altra pagina Web, le pagine Web ASP.NET possono contenere testo statico. Tuttavia, a queste pagine vengono spesso aggiunti controlli, quali caselle di testo, caselle di controllo e pulsanti. Questi controlli consentono all'utente di interagire con la pagina e inviare informazioni al server al momento del postback della pagina.
ASP.NET fornisce un insieme di controlli noti come controlli server Web. I controlli server ASP.NET possono essere simili agli elementi del form HTML corrispondenti. Il controllo ASP.NET TextBox, ad esempio, è simile a un tag HTML <input type="text">. Tuttavia, i controlli server ASP.NET garantiscono maggiori possibilità di programmazione degli elementi HTML. Sono inoltre disponibili controlli server ASP.NET per una gamma di funzioni più ampia di quella offerta dagli elementi HTML. Tra i controlli server utilizzabili nelle pagine Web ASP.NET ci sono i controlli di calendario, i controlli con associazione a dati, per la visualizzazione di elenchi o griglie, i controlli di accesso, per una maggiore sicurezza del sito, e molti altri.
Per ulteriori informazioni, vedere la classe Cenni preliminari sui controlli server Web ASP.NET.
Eventi dei controlli server e delle pagine
Le pagine Web ASP.NET e i controlli presenti su di esse supportano un modello di eventi come quello presente nei Windows Form. Se, ad esempio, quando gli utenti fanno clic su un controllo server Button di una pagina Web ASP.NET, viene eseguito il postback della pagina al server, la pagina viene ricreata e viene generato un evento clic. È possibile aggiungere codice alla pagina per rispondere all'evento clic.
La pagina stessa genera eventi del ciclo di vita al momento dell'inizializzazione, ad esempio gli eventi Page_Init e Page_Load, consentendo di eseguire il codice all'avvio della pagina. È importante ricordare che la pagina viene creata e reinizializzata a ogni round trip. Singoli controlli possono generare propri eventi. I controlli pulsante generano un evento Click, i controlli casella di controllo e pulsante di opzione generano un evento CheckedChanged e i controlli casella di riepilogo ed elenco a discesa generano un evento SelectedIndexChanged. Alcuni controlli, come il controllo Calendar, generano eventi più astratti dei semplici eventi clic. Ad esempio, il controllo Calendar genera un evento VisibleMonthChanged quando gli utenti passano a un altro mese.
La maggior parte dei controlli server ASP.NET supporta solo pochi eventi gestibili nel codice server. Per elaborare un evento, la pagina deve eseguire un round trip, in modo che la scelta dell'utente possa essere inviata alla pagina per l'elaborazione. I controlli server non espongono eventi ad alta frequenza come onmouseover, in quanto ogni volta che viene generato un evento di questo tipo, viene eseguito un altro round trip al server, con un considerevole impatto sul tempo di risposta nella pagina. Tuttavia, è possibile configurare i controlli server ASP.NET per generare eventi sul lato client come onmouseover. In tal caso i controlli non eseguono il postback al server ed è possibile creare uno script client per rispondere agli eventi.
Per ulteriori informazioni sulla creazione e l'utilizzo di eventi e gestori eventi, vedere Gestione di eventi server in pagine Web ASP.NET.
Compatibilità con i browser
Poiché l'elaborazione delle pagine Web ASP.NET avviene sul server Web, le pagine Web ASP.NET sono compatibili con qualsiasi browser o dispositivo mobile. In una pagina Web viene automaticamente eseguito il rendering del codice compatibile con il browser corretto (XHTML o altro linguaggio markup) per funzionalità quali gli stili e il layout. In alternativa, è possibile creare pagine Web con controlli appositamente progettati per il rendering dell'output in dispositivi specifici quali i cellulari. Per ulteriori informazioni, vedere Creazione di pagine Web ASP.NET per dispositivi mobili.