Informazioni su siti, applicazioni e directory virtuali in IIS 7

di Reagan Templin

Introduzione

In IIS è possibile creare siti, applicazioni e directory virtuali per condividere informazioni con gli utenti tramite Internet, una intranet o una rete extranet. Anche se questi concetti esistono nelle versioni precedenti di IIS, diverse modifiche in IIS 7 e versioni successive influiscono sulla definizione e sulla funzionalità di questi concetti. Più importante, siti, applicazioni e directory virtuali ora lavorano insieme in una relazione gerarchica come i blocchi predefiniti di base per ospitare contenuto online e fornire Servizi online.

Questo articolo offre una rapida panoramica delle applicazioni in IIS 6.0 in modo da poter comprendere meglio le differenze introdotte in IIS 7. Illustra quindi i concetti relativi ai siti, alle applicazioni e alle directory virtuali in IIS e introduce la <sites> sezione nella configurazione.

Informazioni su siti, applicazioni e directory virtuali in IIS 6.0

In IIS 6.0 i concetti delle directory virtuali e delle applicazioni sono stati confusi. Anche se sono stati illustrati come concetti separati, (e sono stati concettualmente diversi da un punto di vista di funzionalità), un'applicazione non era un oggetto fisicamente separato da una directory virtuale. In IIS 6.0 un'applicazione è stata davvero una directory virtuale con una o una combinazione delle proprietà seguenti nella metabase: AppFriendlyName, AppRoot, AppIsolated e AppPoolID.

Nota

La radice del sito è un'eccezione, poiché è stata considerata implicitamente come un'applicazione anche se tali proprietà non sono state impostate.

Le applicazioni sono state meno importanti per IIS rispetto alle tecnologie che hanno esteso la funzionalità del server Web, ad esempio Pagine server attive (ASP), Internet Server Application Programming Interface (ISAPI) e ASP.NET. Queste tecnologie hanno fornito funzionalità e elaborazione aggiuntive per le applicazioni ospitate in IIS 6.0 e gli sviluppatori possono creare applicazioni più complesse. La domanda importante per IIS 6.0 è stata isolare tali applicazioni in modo da impedire alle applicazioni in un pool di applicazioni di influire sulle applicazioni in un altro pool di applicazioni nel server.

Informazioni su siti, applicazioni e directory virtuali in IIS 7 e versioni successive

IIS 7 e versioni successive formalizza i concetti relativi ai siti, alle applicazioni e alle directory virtuali. Le directory virtuali e le applicazioni sono ora oggetti separati e sono presenti in una relazione gerarchica nello schema di configurazione IIS. Brevemente, un sito contiene una o più applicazioni, un'applicazione contiene una o più directory virtuali e una directory virtuale esegue il mapping a una directory fisica in un computer.

Come in IIS 6.0, un sito contiene tutto il contenuto, sia statico che dinamico, associato a tale sito. Tuttavia, ogni sito deve contenere almeno un'applicazione, denominata applicazione radice. E ogni applicazione (inclusa l'applicazione radice) deve contenere almeno una directory virtuale, denominata la directory virtuale radice. Questi oggetti funzionano insieme per formare il sito.

Inoltre, in IIS 7 e versioni successive, il concetto di un'applicazione ora ha significato sia per IIS che per le tecnologie che estendono la funzionalità IIS. Un'applicazione è un oggetto importante per il server in fase di esecuzione. Ciò avviee perché le pipeline IIS e ASP.NET di elaborazione delle richieste sono state unite in IIS 7 e versioni successive in modo che il contenuto possa sfruttare le funzionalità fornite in precedenza solo per le applicazioni di codice gestito. Ad esempio, ogni applicazione di codice gestito viene eseguita in un dominio applicazione (AppDomain). Un'applicazione può avere diverse directory virtuali e ognuna verrà servita dallo stesso AppDomain dell'applicazione a cui appartengono.

Le sezioni seguenti illustrano i siti, le applicazioni, le directory virtuali e le relative configurazioni in modo più dettagliato.

Siti

Un sito è un contenitore per applicazioni e directory virtuali ed è possibile accedervi tramite una o più associazioni univoche.

L'associazione include due attributi importanti per la comunicazione: il protocollo di associazione e le informazioni di associazione. Il protocollo di associazione definisce il protocollo su cui si verifica la comunicazione tra il server e il client. Le informazioni di associazione definiscono le informazioni usate per accedere al sito. Ad esempio, il protocollo di associazione di un sito Web può essere HTTP o HTTPS e le informazioni di associazione sono la combinazione di indirizzo IP, porta e intestazione host facoltativa.

Un sito può contenere più di un'associazione se il sito richiede protocolli o informazioni di associazione diverse. Nelle versioni precedenti di IIS sono stati supportati solo i protocolli HTTP e HTTPS. Ad esempio, un sito Web potrebbe avere sia un'associazione HTTP che un'associazione HTTPS quando le sezioni del sito richiedono la comunicazione sicura tramite HTTPS.

In IIS 7 e versioni successive, le associazioni possono essere applicate a qualsiasi protocollo. Il servizio di attivazione dei processi di Windows (WAS) è il nuovo servizio che consente a IIS di usare protocolli aggiuntivi. Questo servizio mantiene il modello di processo IIS 6.0 familiare, ad esempio pool di applicazioni e attivazione del processo basato su messaggi, nonché funzionalità di hosting, ad esempio protezione rapida degli errori, monitoraggio dell'integrità e riciclo. Tuttavia, WAS rimuove la dipendenza da HTTP dall'architettura di attivazione. Ciò è utile per le tecnologie che forniscono comunicazioni da applicazione a applicazione nei servizi Web sui protocolli standard. Il modello di programmazione windows Communication Foundation (WCF) è una tecnologia di questo tipo che può abilitare la comunicazione sui protocolli standard del protocollo TCP (Transmission Control Protocol), Microsoft Message Queuing (MSMQ) e Named Pipe. In questo modo, le applicazioni che usano protocolli di comunicazione sfruttano le funzionalità IIS, ad esempio il riciclo dei processi, la protezione rapida e la configurazione che in precedenza erano disponibili solo per le applicazioni basate su HTTP. Per altre informazioni sul modello di programmazione WCF, vedere Windows Communication Foundation in MSDN.

Oltre a contenere applicazioni (che contengono directory virtuali) e specificare associazioni, le impostazioni di configurazione seguenti appartengono al sito:

  • Limiti: configurare le impostazioni per limitare la quantità di larghezza di banda, il numero di connessioni o il tempo consentito per le connessioni a un sito.
  • Registrazione: configurare le impostazioni per la gestione e l'archiviazione dei file di log per il sito.
  • Log di traccia delle richieste non riuscite: configurare le impostazioni per la registrazione delle tracce delle richieste non riuscite per il sito.

Applicazioni

Un'applicazione è un gruppo di file che fornisce contenuto o fornisce servizi su protocolli, ad esempio HTTP. Quando si crea un'applicazione in IIS, il percorso dell'applicazione diventa parte dell'URL del sito.

In IIS 7 e versioni successive ogni sito deve avere un'applicazione denominata applicazione radice o applicazione predefinita. Tuttavia, un sito può avere più di un'applicazione. Ad esempio, potrebbe essere presente un sito Web online commerce che include diverse applicazioni, ad esempio un'applicazione carrello acquisti che consente agli utenti di raccogliere elementi durante lo shopping e un'applicazione di accesso che consente agli utenti di richiamare le informazioni di pagamento salvate quando effettuano un acquisto.

Oltre all'appartenenza a un sito, un'applicazione appartiene a un pool di applicazioni, che isola l'applicazione dalle applicazioni in altri pool di applicazioni nel server. Nel caso di applicazioni di codice gestito, assicurarsi di associare l'applicazione a un pool di applicazioni che esegue la versione di .NET Framework richiesta dall'applicazione.

Come descritto nella sezione Siti di questo documento, IIS supporta HTTP e HTTPS per impostazione predefinita, ma è possibile usare protocolli aggiuntivi. Per ogni sito, specificare una o più associazioni per comunicare con e accedere al contenuto nel sito. Per comunicare con un'applicazione usando un protocollo specificato nell'associazione del sito padre, è necessario abilitare il protocollo. A tale scopo, specificare il protocollo nell'attributo enabledProtocols per l'applicazione e assicurarsi di avere la scheda listener appropriata nel server e specificata nella sezione nella <listenerAdapters> configurazione.

Directory virtuali

Una directory virtuale è un nome di directory (noto anche come percorso) specificato in IIS e mappa a una directory fisica in un server locale o remoto. Il nome della directory diventa quindi parte dell'URL dell'applicazione e gli utenti possono richiedere l'URL da un browser per accedere al contenuto nella directory fisica, ad esempio una pagina Web o un elenco di directory e file aggiuntivi. Se si specifica un nome diverso per la directory virtuale rispetto alla directory fisica, è più difficile per gli utenti individuare la struttura di file fisica effettiva nel server perché l'URL non esegue il mapping direttamente alla radice del sito.

In IIS 7 e versioni successive, ogni applicazione deve avere una directory virtuale, denominata directory virtuale radice e che esegue il mapping dell'applicazione alla directory fisica contenente il contenuto dell'applicazione. Tuttavia, un'applicazione può avere più di una directory virtuale. Ad esempio, è possibile usare una directory virtuale quando si desidera che l'applicazione includa immagini da un'altra posizione nel file system, ma non si vuole spostare i file di immagine nella directory fisica mappata alla directory virtuale radice dell'applicazione.

Per impostazione predefinita, IIS usa la configurazione dai file Web.config nella directory fisica a cui viene eseguito il mapping della directory virtuale, nonché in tutte le directory figlio in tale directory fisica. Se non si vuole usare i file Web.config nelle directory figlio, specificare false per l'attributo allowSubDirConfig nella directory virtuale.

Facoltativamente, quando è necessario specificare le credenziali e un metodo per accedere alla directory virtuale, è possibile specificare i valori per gli attributi username, password e logonMethod .

Configurazione IIS: <sites> sezione

Esaminare la sezione predefinita <sites> in IIS 7 e versioni successive. Si tratta di ciò che si trova nel file ApplicationHost.config (disponibile in %windir%\system32\inetsrv\config\) dopo l'installazione di IIS in Windows Server® 2008.

<sites> 
    <site name="Default Web Site" id="1"> 
        <application path="/"> 
            <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" /> 
        </application> 
        <bindings> 
            <binding protocol="http" bindingInformation="*:80:" /> 
        </bindings> 
    </site> 
    <siteDefaults> 
        <logFile logFormat="W3C" directory="%SystemDrive%\inetpub\logs\LogFiles" /> 
        <traceFailedRequestsLogging directory="%SystemDrive%\inetpub\logs\FailedReqLogFiles" /> 
    </siteDefaults> 
    <applicationDefaults applicationPool="DefaultAppPool" /> 
    <virtualDirectoryDefaults allowSubDirConfig="true" /> 
</sites>

Quando viene visualizzato un singolo "/" in un campo percorso, si sa che si tratta di un oggetto radice. A seconda che si tratti della sezione dell'applicazione o della directory virtuale, si tratta di un'applicazione radice o di una directory virtuale radice.

Elementi predefiniti

La sezione seguente elenca le raccolte e gli elementi nella <sites> sezione e la relativa relazione gerarchica all'interno della <sites> sezione.

<sites> section 
<site> collection 
<bindings> collection 
<binding> element 
<clear> element 
<limits> element 
<logFile> element 
<traceFailedRequestsLogging> element 
<application> collection 
<virtualDirectory> collection 
<virtualDirectoryDefaults> element 
<applicationDefaults> element 
<virtualDirectoryDefaults> element 
<siteDefaults> element 
<bindings> collection 
<binding> element 
<clear> element 
<limits> element 
<logFile> element 
<traceFailedRequestsLogging> element 
<applicationDefaults> element 
<virtualDirectoryDefaults> element

Si noti che sono presenti due elementi che vengono visualizzati in più posizioni: l'elemento e l'elemento <applicationDefaults><virtualDirectoryDefaults> . Esiste anche un <siteDefaults> elemento, anche se viene visualizzato una sola volta perché può essere configurato in una sola posizione nella <sites> sezione. Gli elementi predefiniti sono speciali perché consentono di configurare i valori predefiniti per gli attributi anziché dover ripetere gli stessi valori in ogni raccolta.

Quando un attributo è configurato a più livelli, viene usato il valore a livello più basso. Ad esempio, se si specifica un valore predefinito in un <applicationDefaults> elemento nella <sites> sezione e in una <site> raccolta, verrà usato il valore della <site> raccolta. Inoltre, se lo stesso attributo o elemento figlio è configurato sia in un elemento predefinito che nell'insieme dell'oggetto, verrà usato il valore nell'insieme. Ad esempio, se si configura un attributo in un elemento e in una <applicationDefaults><application> raccolta, verrà usato il valore della <application> raccolta.

La tabella seguente specifica in quali elementi padre è possibile configurare un <applicationDefaults> elemento e descrive l'effetto che i valori hanno nelle applicazioni.

Elemento padre Descrizione
<sites> Sezione Specifica le impostazioni predefinite per tutte le applicazioni nel server.
<site> Collezione Specifica le impostazioni predefinite per tutte le applicazioni nel sito padre.

La tabella seguente specifica in quali elementi padre è possibile configurare un <virtualDirectoryDefaults> elemento e descrive l'effetto che i valori hanno nelle directory virtuali.

Elemento padre Descrizione
<sites> Sezione Specifica le impostazioni predefinite per tutte le directory virtuali nel server.
<site> Collezione Specifica le impostazioni predefinite per tutte le directory virtuali nel sito padre.
<application> Collezione Specifica le impostazioni predefinite per tutte le directory virtuali nell'applicazione padre.

Riepilogo

È ora necessario avere una migliore comprensione dei siti, delle applicazioni e delle directory virtuali in IIS 7 e versioni successive. A differenza di IIS 6.0, le applicazioni e le directory virtuali sono diventati oggetti distinti nella configurazione, che evidenziano lo scopo univoco per il server Web e la relazione con il sito. Inoltre, i siti possono ora contenere applicazioni che usano protocolli diversi da HTTP e HTTPS, che estende la funzionalità del sito mantenendo i vantaggi del modello di processo introdotti in IIS 6.0.

Per altre informazioni sull'architettura WAS e IIS, vedere Architettura Request-Processing IIS in IIS.NET. Per altre informazioni sulle impostazioni di configurazione descritte in questo articolo, vedere Schema impostazioni IIS 7 in MSDN.