Condividi tramite


Informazioni sulla compilazione dinamica ASP.NET

Aggiornamento: novembre 2007

Per consentire all'applicazione Web di soddisfare le richieste, ASP.NET deve innanzitutto analizzare e compilare il codice dell'applicazione Web in uno o più assembly. Durante la compilazione, il codice viene convertito in una rappresentazione indipendente dal linguaggio e dalla CPU denominata Microsoft Intermediate Language (MSIL). In fase di esecuzione, MSIL viene eseguito nel contesto di .NET Framework e convertito in istruzioni specifiche della CPU per il processore presente sul computer sul quale viene eseguita l'applicazione.

Compilazione alla prima richiesta

Per impostazione predefinita, i file di codice e le pagine Web ASP.NET vengono compilati dinamicamente quando gli utenti richiedono per la prima volta una risorsa, ad esempio una pagina ASP.NET (file con estensione aspx), da un sito Web. Dopo la prima compilazione di pagine e file di codice, le risorse compilate vengono memorizzate nella cache, in modo da ottimizzare le successive richieste relative alla stessa pagina.

ASP.NET supporta la compilazione dinamica di pagine ASP.NET (file con estensione aspx), servizi Web ASP.NET (file con estensione asmx), gestori HTTP ASP.NET (file con estensione ashx) e file di applicazione ASP.NET (Global.asax), nonché di altri file quali file di classe e codice sorgente. Per ulteriori informazioni sui tipi di file ASP.NET, vedere Tipi di file dei siti Web. Per ulteriori informazioni sul processo di compilazione ASP.NET, vedere la sezione "Ciclo di vita della compilazione" in Cenni preliminari sul ciclo di vita delle applicazioni ASP.NET per IIS 5.0 e 6.0.

Ricompilazione alla modifica

Le modifiche apportate a un file compilato dinamico invalideranno automaticamente l'assembly compilato memorizzato nella cache del file e attiveranno la ricompilazione di tutte le risorse interessate. La volta successiva che viene eseguita una richiesta al codice, ASP.NET riconosce che il codice è stato modificato e ricompila le risorse interessate dell'applicazione Web. Questo sistema consente di sviluppare rapidamente applicazioni con un sovraccarico minimo di elaborazione della compilazione. Si noti che, a seconda delle modifiche apportate alle risorse, il risultato può variare dalla ricompilazione di una singola pagina alla ricompilazione di un intero sito Web.

Dipendenze di compilazione

Quando viene effettuata la prima richiesta a un'applicazione, ASP.NET compila i file secondo un ordine specifico. I primi elementi da compilare vengono detti elementi di livello principale. Dopo la prima richiesta gli elementi di livello principale vengono ricompilati solo se cambia una dipendenza.

Tra gli elementi di livello superiore sono inclusi la cartella App_GlobalResources, la cartella App_WebResources, le proprietà del profilo, la cartella App_Code e il file Global.asax. Dopo la compilazione degli elementi di livello superiore, ASP.NET compila elementi aggiuntivi. Tra questi elementi sono inclusi la cartella App_LocalResources, singole pagine ASP.NET (file con estensione aspx), controlli utente ASP.NET (file con estensione ascx), gestori HTTP ASP.NET (file con estensione ashx) e moduli HTTP ASP.NET (file con estensione asmx), nonché temi, pagine master e altri file di origine.

Per ulteriori informazioni, vedere Layout del sito Web ASP.NET e la sezione "Ciclo di vita della compilazione" in Cenni preliminari sul ciclo di vita delle applicazioni ASP.NET per IIS 5.0 e 6.0.

Output della compilazione

Quando il codice è compilato, gli assembly risultanti vengono memorizzati nella cache in una cartella nel server. Per questa cartella sono necessarie autorizzazioni appropriate affinché il codice possa essere compilato ed eseguito correttamente. È possibile configurare sia il percorso della cartella di compilazione sia le autorizzazioni in base alle quali il codice viene compilato e funziona.

Percorso della cartella di compilazione

Per impostazione predefinita, quando si compila un'applicazione Web il codice compilato viene memorizzato nella cartella dei file temporanei ASP.NET. Questa cartella è una sottodirectory del percorso in cui è installato .NET Framework. In genere, il percorso è il seguente:

%SystemRoot%\Microsoft.NET\Framework\versionNumber\Temporary ASP.NET Files

Autorizzazioni necessarie per la cartella di compilazione

Il processo di installazione di .NET crea la cartella dei file temporanei ASP.NET e concede autorizzazioni di accesso all'account utente locale ASP.NET con le autorizzazioni ad alta attendibilità necessarie per accedere al codice compilato. Se si modificano le impostazioni di configurazione o dell'account, è necessario assicurarsi che l'account utilizzato disponga di autorizzazioni ad alta attendibilità per la cartella dei file temporanei ASP.NET. Per ulteriori informazioni, vedere Procedura: eseguire il processo di lavoro con un account utente.

Configurabilità della cartella di compilazione

Per ogni applicazione, ASP.NET crea una sottocartella discreta nella cartella dei file temporanei ASP.NET. È possibile configurare la directory principale utilizzando l'attributo tempDirectory della sezione di compilazione del file di configurazione. Questo attributo facoltativo consente di specificare la directory da utilizzare per l'archiviazione dei file temporanei durante la compilazione. Il valore predefinito è una stringa vuota (""). Nel caso di una stringa vuota e se il processo corrente ha le autorizzazioni di accesso necessarie, i file vengono archiviati nella directory seguente:

%FrameworkInstallLocation%\Temporary ASP.NET Files

Per ulteriori informazioni, vedere Elemento compilation (schema delle impostazioni ASP.NET) e la proprietà TempDirectory della classe CompilationSection.

Supporto di più linguaggi

ASP.NET 2.0 supporta più linguaggi di programmazione nella stessa applicazione Web. Nella directory App_Code è possibile specificare una sottocartella per ogni linguaggio, ad esempio C# e Visual Basic. ASP.NET creerà quindi un assembly distinto per ogni sottocartella. Per ulteriori informazioni, vedere Cartelle di codice condivise nei siti Web ASP.NET e Procedura dettagliata: sviluppo di siti Web tramite più linguaggi di programmazione.

Vantaggi e svantaggi della compilazione dinamica

La compilazione dinamica ASP.NET consente di modificare il codice sorgente senza dover compilare in modo esplicito il codice prima di distribuire l'applicazione Web. Se si modifica un file di origine, ASP.NET ricompila automaticamente il file e aggiorna tutte le risorse collegate. Perché le modifiche siano effettive, non è necessario riavviare il server IIS, a meno che non sia stata modificata la sezione <processModel>. È inoltre possibile estendere il sistema di generazione ASP.NET creando provider di generazione personalizzati per i nuovi tipi di file chiamati durante la compilazione. I vantaggi della compilazione dinamica del sistema di generazione ASP.NET sono compatibili anche con i tipi e le strutture di applicazioni ASP.NET più vecchi.

Vi sono tuttavia alcune funzionalità che la compilazione dinamica non è in grado di offrire. La compilazione dinamica può comportare tempi di risposta iniziali più lenti per gli utenti, perché i file di pagine e codice devono essere compilati la prima volta che vengono richiesti. Ciò può rappresentare un problema soprattutto per i siti di grandi dimensioni, che vengono aggiornati di frequente. La compilazione dinamica non consente di identificare errori della fase di compilazione prima che gli utenti accedano a un sito e non offre la possibilità di creare una versione compilata del sito da distribuire a un server di produzione senza codice sorgente. Qualora queste limitazioni costituiscano un problema per le applicazioni Web da sviluppare, è possibile precompilare il sito Web. Per informazioni dettagliate, vedere Cenni preliminari sulla precompilazione in ASP.NET.

Vedere anche

Attività

Procedura: proteggere un'applicazione ASP.NET su un server condiviso

Concetti

Rappresentazione ASP.NET

Elenchi di controllo di accesso (ACL, Access Control List) ASP.NET necessari

Tipi di file dei siti Web

Layout del sito Web ASP.NET

Riferimenti

CodeGenDir