Condividi tramite


Cenni preliminari sulla migrazione ad ASP.NET 2.0

Aggiornamento: novembre 2007

Molti dei concetti di programmazione utilizzati nelle versioni precedenti di ASP.NET sono rimasti invariati in ASP.NET versione 2.0, quindi lo sviluppo di applicazioni in ASP.NET 2.0 risulterà familiare agli utenti di ASP.NET 1.x. ASP.NET 2.0 può essere eseguito sugli stessi sistemi operativi e sistemi hardware utilizzati per l'esecuzione delle applicazioni ASP.NET 1.x, tra cui Microsoft Windows 2000 e Microsoft Internet Information Services (IIS) 5.0, Microsoft Windows XP e IIS 5.1 e Microsoft Windows Server 2003 e IIS 6.0.

Se si intende migrare ad ASP.NET un'applicazione Web esistente, prima di procedere è consigliabile esaminare le nuove funzionalità di ASP.NET 2.0. Le novità principali riguardano il modello di pagina code-behind, la struttura di cartelle delle applicazioni Web e il modello di compilazione delle pagine.

Prima di eseguire la migrazione verificare che l'applicazione ASP.NET 1.x possa essere compilata ed eseguita sulla versione di .NET Framework in cui è stata sviluppata. Inoltre, prima di iniziare la migrazione verificare che Microsoft .NET Framework versione 2.0 sia installato e funzioni correttamente.

Questo argomento contiene considerazioni di carattere generale da prendere in esame prima di eseguire la migrazione. Questo argomento contiene le seguenti sezioni:

  • Vantaggi della migrazione

  • Modelli di pagina

  • Condivisione di dati tra le versioni di ASP.NET

  • Autenticazione basata su form tra versioni di ASP.NET

  • Conflitti a livello di nomi

  • Conformità del markup

  • Script su più siti e HttpOnly

Vantaggi della migrazione

La migrazione di un'applicazione Web ad ASP.NET 2.0 presenta molti vantaggi, tra cui una migliore separazione tra codice di pagina e codice di programmazione, la disponibilità di cartelle di applicazione riservate e la compilazione automatica del codice.

Il nuovo modello code-behind basato su classi parziali garantisce una maggiore separazione tra codice di pagina e codice di programmazione ed elimina la necessità di includere dichiarazioni dei controlli e codice wireup per gli eventi nei file code-behind. Nel modello di compilazione delle pagine ASP.NET, i file code-behind vengono compilati in fase di esecuzione in più assembly alla prima richiesta dei corrispondenti file con estensione aspx.

Ora in ASP.NET viene utilizzata una struttura più efficiente per le applicazioni Web, basata su cartelle riservate. Queste cartelle includono contenuto specifico che consente di organizzare l'applicazione in modo più efficiente. Alcune cartelle riservate, come App_Data, non forniscono il loro contenuto a seguito di richieste Web, ma il codice dell'applicazione può accedervi. Per ulteriori informazioni, vedere Struttura dei siti Web ASP.NET.

Il compilatore di ASP.NET 2.0 compila il codice dell'applicazione e le risorse dipendenti quando viene richiesta una risorsa del sito Web. Ad esempio, in ASP.NET 2.0 è possibile salvare semplicemente le modifiche apportate a una pagina Web esistente o a risorse dipendenti e richiedere nuovamente la pagina in modo che la pagina e le relative risorse vengano ricompilate. Questo vale per risorse come i file di codice della cartella App_Code, i file di risorse delle cartelle App_GlobalResources e App_LocalResources e i temi della cartella App_Themes. Per ulteriori informazioni sul modello di compilazione delle pagine, vedere Cenni preliminari sulla compilazione in ASP.NET.

Se si decide di migrare un'applicazione di grandi dimensioni, è consigliabile utilizzare Visual Web Developer 2005, Visual Web Developer 2005 Express Edition, Visual Studio 2005 o Visual Studio 2005 Team System, ognuno dei quali presenta una procedura guidata per la migrazione che automatizza molte delle attività tipiche di una migrazione. La migrazione guidata apporta le modifiche necessarie per convertire le applicazioni Web ASP.NET 1x in ASP.NET 2.0.

Non è necessario eseguire la migrazione delle applicazioni Web, perché ASP.NET 2.0 garantisce un alto livello di compatibilità con le versioni precedenti. Se si decide di non eseguire la migrazione, è comunque possibile utilizzare molte delle funzionalità di ASP.NET 2.0 nelle proprie applicazioni Web, purché queste utilizzino .NET Framework 2.0. Per configurare un'applicazione Web esistente in modo che utilizzi .NET Framework 2.0, vedere Procedura: eseguire applicazioni ASP.NET 1.x in .NET Framework 2.0.

Modelli di pagina

Il modello di pagina Web code-behind di ASP.NET consente di archiviare il codice di una pagina Web in un file, il file aspx, e il codice di programmazione in un altro file, il file code-behind. Il modello code-behind per ASP.NET 2.0 è diverso da quello delle versioni precedenti, in quanto sfrutta una nuova funzionalità del linguaggio nota come classi parziali. Il nuovo modello code-behind di ASP.NET 2.0 consente una maggiore separazione tra il codice della pagina e il codice di programmazione rispetto alle versioni precedenti di ASP.NET.

Le pagine Web che utilizzano il vecchio modello code-behind basato sull'attributo CodeBehind della direttiva @ Page funzionano anche in ASP.NET 2.0. Tuttavia, è consigliabile migrare queste pagine al nuovo modello code-behind utilizzando l'attributo CodeFile della direttiva @ Page e una definizione di classe parziale nel file code-behind per poter sfruttare la migliore separazione tra codice di pagina e codice di programmazione, nonché la compilazione automatica delle pagine. Le pagine Web che utilizzano il vecchio modello code-behind devono essere compilate a mano.

È possibile apportare le modifiche a mano, come descritto in Procedura: migrare una pagina Web ASP.NET 1.1 ad ASP.NET 2.0 utilizzando l'attributo CodeBehind oppure utilizzare una delle versioni di Microsoft Visual Studio 2005 che includono la procedura guidata per la migrazione, come Visual Web Developer 2005 Express Edition.

La versione 1.1 di ASP.NET supporta inoltre a una variante del modello code-behind in cui l'attributo CodeBehind della direttiva @ Page è stato sostituito dall'attributo Src. Le pagine Web che utilizzano l'attributo Src funzionano in ASP.NET 2.0 e non richiedono modifiche.

A differenza del modello code-behind, il modello di pagina a file unico inserisce il codice della pagina e il codice di programmazione nello stesso file con estensione aspx. Le pagine a file unico delle versioni precedenti di ASP.NET funzionano in ASP.NET 2.0 e non è necessario alcun intervento di modifica.

Condivisione di dati tra le versioni di ASP.NET

È possibile decidere di migrare alcune parti del sito Web ad ASP.NET 2.0 e lasciare invariate altre. Se il sito Web è suddiviso in applicazioni Web indipendenti che interagiscono per offrire la funzionalità del sito Web, è possibile decidere di eseguire la migrazione di alcune applicazioni ma non di altre. In questo caso non sarà possibile condividere lo stato delle applicazioni tra le applicazioni migrate e quelle non migrate. Analogamente, lo stato della sessione non verrà condiviso dalle applicazioni, a meno che non venga fornita una soluzione per lo stato della sessione a cui possano accedere sia le pagine ASP.NET 1.x che le pagine ASP.NET 2.0. Per ulteriori informazioni, vedere Implementazione di un provider dell'archivio dello stato sessione.

Autenticazione basata su form tra versioni di ASP.NET

L'autenticazione basata su form consente di autenticare gli utenti mediante un codice personalizzato e di gestire un token di autenticazione in un cookie o nell'URL di pagina. L'autenticazione basata su form di ASP.NET può funzionare anche tra applicazioni che eseguono versioni diverse di ASP.NET, quindi i ticket di autenticazione emessi da una versione possono essere utilizzati dall'altra.

La procedura per la configurazione dell'autenticazione tra versioni diverse di ASP.NET è analoga a quella per la configurazione dell'autenticazione in una rete di server Web (Web farm). In entrambi i casi è necessario impostare in modo esplicito gli attributi validationKey e decryptionKey dell'elemento machineKey per le applicazioni che condividono i ticket di autenticazione con la stessa chiave. Per supportare l'autenticazione tra versioni diverse di ASP.NET, è necessario un intervento di configurazione aggiuntivo, vale a dire è necessario impostare l'attributo decryption dell'elemento machineKey su 3DES nel file Web.config dell'applicazione ASP.NET 2.0. La crittografia predefinita per ASP.NET 2.0 è AES, mentre nelle versioni precedenti di ASP.NET viene utilizzata la crittografia 3DES. Per ulteriori informazioni, vedere Cenni preliminari sull'autenticazione basata su form ASP.NET.

Conflitti a livello di nomi

Prima di eseguire la migrazione è consigliabile cercare nell'applicazione Web i nomi che sarebbero in conflitto con le classi e gli spazi dei nomi di .NET Framework 2.0. Possono verificarsi conflitti quando nell'applicazione Web vengono utilizzati nomi comuni già utilizzati in .NET Framework, ad esempio cache, membro, profilo e ruolo. Per evitare conflitti a livello di nomi, individuare nel codice i riferimenti ai nomi in questione e utilizzare un riferimento completo.

In ASP.NET 2.0 viene utilizzato un layout di sito Web diverso rispetto alla versioni precedenti. Per semplificare la gestione delle applicazioni Web, in ASP.NET determinati nomi di file e cartelle sono riservati a tipi specifici di contenuto. Il contenuto delle cartelle riservate non viene fornito in risposta alle richieste Web e questo può comportare problemi nelle applicazioni esistenti. Pertanto, prima di migrare singoli file di un'applicazione è consigliabile modificare i nomi delle cartelle o dei file dell'applicazione che sono in conflitto con i nomi delle cartelle e dei file riservati di ASP.NET 2.0. Per ulteriori informazioni sulle cartelle riservate nei layout di siti Web ASP.NET, vedere Layout del sito Web ASP.NET

Conformità del markup

Per impostazione predefinita, tutto il codice generato da ASP.NET e tutti i controlli server Web inclusi in ASP.NET sono ora conformi allo standard XHTML 1.0 Transitional. Questo può causare problemi di rendering HTML dopo la migrazione. Per agevolare la migrazione di un'applicazione Web, è possibile impostare l'attributo mode dell'elemento xhtmlConformance su Legacy nel file Web.config. Questa deve essere una soluzione temporanea nel processo di migrazione. A lungo termine è consigliabile eseguire l'applicazione con l'attributo mode dell'elemento xhtmlConformance impostato su Transitional. È consigliabile, inoltre, aggiungere l'elemento DOCTYPE alle pagine migrate. Per ulteriori informazioni sui vantaggi derivanti dal rendere le pagine Web conformi a XHTML, vedere ASP.NET e XHTML

Script su più siti e HttpOnly

La proprietà HttpOnly della classe HttpCookie è stata introdotta con .NET Framework 2.0. L'impostazione di questa proprietà su true consente di ridurre le minacce di script su più siti. La proprietà HttpOnly è impostata automaticamente su true per i cookie dell'autenticazione basata su form e i cookie dell'ID di sessione in modo che tali cookie non siano disponibili per gli script sul lato client. Se una pagina Web sottoposta a migrazione genera un'eccezione NullReferenceException, potrebbe indicare che la sessione dal client è stata persa perché la proprietà HttpOnly è impostata su true. In questo caso, è possibile utilizzare una delle risoluzioni seguenti:

  • Impostare la proprietà HttpOnly di ogni cookie su false nel gestore eventi EndRequest della classe HttpApplication nel file Global.asax.

  • Scrivere un modulo personalizzato che copia il cookie in un altro cookie e cancella la proprietà HttpOnly in modo da consentire la modifica da parte dello script client.

  • Scrivere un amministratore dell'ID di sessione personalizzato che non imposti la proprietà HttpOnly su true.

Per ulteriori informazioni sulla riduzione degli effetti degli script su più siti, vedere Mitigating Cross-site Scripting with HTTP-only Cookies (informazioni in lingua inglese).

Vedere anche

Concetti

Cenni preliminari sui progetti di applicazione Web

Cenni preliminari sull'autenticazione basata su form ASP.NET

Riferimenti

Elemento machineKey (schema delle impostazioni ASP.NET)