Il modello di programmazione ASP.NET, è leggermente differente rispetto a quello degli altri linguaggi di scripting lato server.
Nei più noti linguaggi di scripting lato server, come JSP e PHP e nelle stesse vecchie ASP, il codice lato server viene scritto all'interno della pagina, nei punti in cui è necessaria un'interazione con il server.
Il web server in questi casi incontra il codice server side e si occupa di inviarlo all'applicazione che lo può tradurre. Tutto il codice client side (HTML, JavaScript), invece, viene inviato al client senza elaborazioni.
In ASP.NET il processo è completamente differente.
Quando una pagina è richiesta per la prima volta al server ASP.NET, viene compilata, e trasformata in un class file scritto nel linguaggio MSIL. Il codice client side viene convertito in un insieme di espressioni di tipo output.Write
(in modo simile a quanto fanno i Java application server quando convertono le pagine JSP nelle corrispondenti servlet).
Le classi compilate non necessitano di essere ricompilate quando vengono richieste una seconda volta, vengono ricompilate solo se subiscono modifiche.
La pagina, in ASP.NET è un oggetto
Una pagina ASP.NET è detta "web form" ed il modello di programmazione è un modello basato sui moduli. Si è cercato di giungere ad un simile modello per far si che, un'applicazione
web somigliasse il più possibile ad un'applicazione desktop a finestre.
Un'applicazione ASP.NET quindi consiste in un insieme di web form, ognuno dei quali contiene oggetti. Sono oggetti ospitati ad esempio i pezzi di codice lato client (HTML), i controlli server ed altri oggetti ereditati ad esempio tramite la direttiva Import.
Se confrontiamo la velocità di ASP.NET rispetto ad ASP, notiamo un rallentamento di prestazioni quando la pagina deve essere compilata, cioè la prima volta che viene richiesta, ma un notevole aumento di prestazioni a regime.
Inoltre, la classe compilata (assembly) viene scritta su disco e sopravvive in caso di reboot della macchina server, cioè non serve ricompilarla.
La classe Page
Come già accennato, quando un client richiede una pagina con estensione .aspx
, sul server, i componenti che appartengono a quella pagina vengono compilati in un'unica unità. Questa unità è una classe che eredita dalla classe Object.Control.TemplateControl.Page
.
Per questa classe Page
può essere creata un'istanza ogni volta che viene richiesta la pagina aspx. L'oggetto risultante viene utilizzato per elaborare le richieste in arrivo e restituisce i dati al client richiedente.
La classe Page fa poi da contenitore per tutti i componenti appartenenti ad una pagina che sono essi stessi oggetti.
Non è lo scopo di questa guida esaminare dettagliatamente le classi del Framework .NET ma evidenzieremo alcuni aspetti della classe Page.
Proprietà della classe Page
Citiamo alcune delle proprietà della classe Page:
- Application Per ogni applicazione web, vi è un'istanza di questo oggetto che è condivisa da tutti i client che accedono all'applicazione.
- Cache Serve per archiviare dei dati che possono rimanere inalterati tra una richiesta di pagina el'altra.
- EnableViewState Valore booleano che indica se i comandi server debbano o no mantenere il proprio
ViewState
- IsPostBack Indica se la pagina è caricata per la prima volta
- Request Consente di accedere alle informazioni sulla richiesta HTTP
- Response Consente di accedere e modificare la risposta HTTP
- Session Riferimento all'oggetto Session che gestisce la sessione corrente
Metodi della classe Page
Tra i metodi citiamo:
- DataBind Associa i dati
- FindControl Consente di trovare un comando nella pagina
- MapPath Recupera il percorso fisico di uno specifico percorso virtuale
Nella prossima lezione esaminiamo gli eventi generati in una sequenza di andata e ritorno dal server per la classe Page.