|
|
ASP .NET 2.0 passo per passo
|
| Editore | Mondadori Informatica |
| Autore | Shepherd George |
| Titolo originale | Microsoft ASP .NET 2.0 step by step |
| Editore originale | Microsoft Press |
| Collana | Passo per passo |
| Pagine | 421 |
| Volumi | 1 |
| Livello | Introduttivo-Intermedio |
| Lingua | Italiano |
| Data pubblicazione | 02 - 2006 |
| ISBN | 8804541415 |
|
|
| Prezzo di copertina |
| Euro 50,00 |
|
Introduzione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Ringraziamenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxiii
1 Nozioni generali sulle applicazioni Web . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Richieste HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Richieste HTTP da un browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Effettuazione di richieste HTTP senza un browser . . . . . . . . . . . . . . . . . . . . . . . . . 4
HyperText Markup Language (HTML) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Contenuto dinamico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Form HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Common Gateway Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
La piattaforma Microsoft come server Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Internet Information Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
DLL della Application Programming Interface di Internet Services . . . . . . . . . . 10
Internet Information Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
ASP classico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Problematiche di sviluppo Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Capitolo 1 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2 Nozioni principali sulle applicazioni ASP.NET . . . . . . . . . . . . . . . . . . . . . 19
L’applicazione canonica Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Costruzione dell’applicazione Web HelloWorld . . . . . . . . . . . . . . . . . . . . . . . . . 20
Integrazione di HTML e codice eseguibile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Blocchi eseguibili sul lato server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Il modello di compilazione ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Visualizzazione degli assembly ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Opzioni di codifica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Lo stile ASP.NET 1.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Lo stile ASP.NET 2.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
La pipeline ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Percorso di richiesta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Visual Studio e ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Tipologie di siti Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Capitolo 2 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3 Modello di rendering della pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Rendering dei controlli come tag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Assemblaggio della UI come insieme di componenti . . . . . . . . . . . . . . . . . . . . . . . . 52
La pagina con ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Il modello di rendering della pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
La struttura di controllo della pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Aggiunta di controlli mediante Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Costruzione di una pagina con Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Considerazioni sul layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Conclusione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Capitolo 3 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4 Controlli di rendering personalizzati . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
La classe Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Visual Studio e i controlli personalizzati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Creazione di un controllo personalizzato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Verifica palindroma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Il controllo per la verifica palindroma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Controlli ed eventi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Aggiunta di un evento PalindromeFound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
HtmlTextWriter e i controlli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Utilizzo di HtmlTextWriter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Controlli e stato della visualizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Utilizzo dello stato della visualizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Capitolo 4 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5 Controlli compositi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Controlli compositi e controlli di rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Controlli compositi personalizzati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Il controllo per la verifica palindroma come controllo
composito personalizzato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Controlli utente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Il controllo per la verifica palindroma come controllo utente . . . . . . . . . . . . . . 99
Quando utilizzare i vari tipi di controlli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Capitolo 5 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6 Controlli vari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Convalida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Funzionamento della convalida di pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Altre convalide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Proprietà delle convalide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
TreeView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
MultiView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Capitolo 6 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7 Web part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Breve storia delle Web part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Efficacia delle Web part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Sviluppo di controlli Web part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Sviluppo di pagine Web part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Sviluppo di applicazioni Web part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Architettura delle Web part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
WebPartManager e WebZones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Zone incorporate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Web part incorporate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Sviluppo di una Web part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Conclusione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Capitolo 7 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
8 Coerenza dell’aspetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Creazione di un aspetto coerente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Pagine master ASP.NET 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Temi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Interfacce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Conclusione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Capitolo 8 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
9 Configurazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Configurazione di Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Configurazione di .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Machine.Config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Gestore della sezione di configurazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Web.Config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Configurazione in ASP.NET 1.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Configurazione in ASP.NET 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Lo strumento di amministrazione di ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Snap-in MMC per ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Conclusione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Capitolo 9 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
10 Accesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Protezione basata su Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Protezione di IIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Autenticazione di base dei form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Servizi di autenticazione ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
La classe FormsAuthentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Pagina di accesso facoltativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Gestione degli utenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Controlli di accesso ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Autorizzazione degli utenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Conclusione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Capitolo 10 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
11 Associazione dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Rappresentazione degli insiemi senza associazione dati . . . . . . . . . . . . . . . . . . . . . 211
Rappresentazione degli insiemi con associazione dati . . . . . . . . . . . . . . . . . . . . . . 212
Controlli basati su ListControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
TreeView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
FormView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
GridView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
DetailsView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
DataList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Repeater . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Associazione dati semplice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Accesso ai database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Storia dei database .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Connessioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Comandi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Gestione dei risultati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Origini dati ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Altri controlli associati ai dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Conclusione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Capitolo 11 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
12 Personalizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Personalizzazione delle visite Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Personalizzazione in ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Profili utente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Provider di personalizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Utilizzo della personalizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Definizione dei profili in Web.Config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Utilizzo delle informazioni di profilo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Salvataggio delle modifiche ai profili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Profili e utenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Conclusione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Capitolo 12 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
13 Stato sessione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Scopo dello stato sessione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
ASP.NET e lo stato sessione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Indicazioni sullo stato sessione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Stato sessione e dati più complessi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Configurazione dello stato sessione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Disattivazione dello stato sessione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Archiviazione dello stato sessione InProc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Registrazione dello stato sessione in un server di stato . . . . . . . . . . . . . . . . . . 261
Registrazione dello stato sessione in un database . . . . . . . . . . . . . . . . . . . . . . . 262
Traccia dello stato sessione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Traccia dello stato sessione mediante i cookie . . . . . . . . . . . . . . . . . . . . . . . . . 262
Traccia dello stato sessione mediante l’URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Utilizzo di AutoDetect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Applicazione dei profili di periferica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Timeout dello stato sessione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Altre impostazioni di configurazione dello stato sessione . . . . . . . . . . . . . . . . . . . 264
Il controllo Wizard: un’alternativa allo stato sessione . . . . . . . . . . . . . . . . . . . . . . . 264
Conclusione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Capitolo 13 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
14 Cache dei dati dell’applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Utilizzo della cache dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Impatto dell’utilizzo della cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Gestione della cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
DataSet in memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Scadenza della cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Dipendenze della cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
La dipendenza SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Cancellazione della cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Conclusione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Capitolo 14 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
15 Cache dell’output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Cache del contenuto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Gestione del contenuto nella cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Modifica della direttiva OutputCache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
HttpCachePolicy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Cache dei percorsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Dipendenze della cache dell’output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Cache dei profili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Cache dei controlli utente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Utilizzo razionale della cache dell’output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Conclusione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Capitolo 15 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
16 Analisi e debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Analisi delle pagine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Attivazione dell’analisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Istruzioni di analisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Analisi dell’applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
Abilitazione dell’analisi da programma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
L’evento TraceFinished . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Accodamento degli altri messaggi di analisi . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Debug con Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
Pagine d’errore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
Eccezioni non gestite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Conclusione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Capitolo 16 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
17 I moduli applicazione e HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
L’applicazione: un punto d’incontro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Override di HttpApplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Avvertenze sullo stato applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Gestione degli eventi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Eventi HttpApplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
HttpModules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Moduli esistenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Implementazione di un modulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Visualizzazione dei moduli attivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Registrazione dello stato nei moduli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Global.asax e HttpModules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
Conclusione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
Capitolo 17 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
18 Gestori personalizzati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Gestori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Gestori incorporati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
IHttpHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Implementazione di IHttpHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
CustomFormHandler mediante VB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Gestori e stato sessione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Gestori generici (File ASHX) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Conclusione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
Capitolo 18 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
19 Servizi Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Servizi remoti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
Servizi remoti sul Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Simple Object Access Protocol (SOAP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Trasporto del tipo System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Linguaggio di descrizione dei servizi Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
Se non è possibile utilizzare ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
Un servizio Web in ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Utilizzo dei servizi Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
Esecuzione asincrona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
Servizi Web in Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
Efficacia dei servizi Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
Altre funzionalità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
Conclusioni 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Capitolo 19 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
20 Gestione e distribuzione delle applicazioni Web . . . . . . . . . . . . . . . . . 397
Progetti Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
Progetto HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
Progetto FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
Progetto File System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
Precompilazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
Precompilazione orientata alle prestazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
Precompilazione per la distribuzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Conclusione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
Capitolo 20 - Riferimento rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
Indice analitico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .411
|
|
|
|