Introduzione alle architetture IIS

di IIS Team, Reagan Templin

Compatibilità

Versione Note
IIS 7.0 e versioni successive Le funzionalità descritte in questo articolo sono state introdotte in IIS 7.0.
IIS 6.0 e versioni precedenti Le funzionalità descritte in questo articolo non sono supportate prima di IIS 7.0.

Introduzione

Internet Information Services (IIS) 7 e versioni successive forniscono un'architettura di elaborazione delle richieste che include:

  • Il servizio di attivazione dei processi di Windows (WAS), che consente ai siti di usare protocolli diversi da HTTP e HTTPS.
  • Motore server Web che può essere personalizzato aggiungendo o rimuovendo moduli.
  • Pipeline di elaborazione delle richieste integrate da IIS e ASP.NET.

Componenti in IIS

IIS contiene diversi componenti che eseguono funzioni importanti per i ruoli applicazione e server Web in Windows Server® 2008 (IIS 7.0) e Windows Server 2008 R2 (IIS 7.5). Ogni componente ha responsabilità, ad esempio l'ascolto delle richieste effettuate al server, la gestione dei processi e la lettura dei file di configurazione. Questi componenti includono listener di protocollo, ad esempio HTTP.sys e servizi, ad esempio il servizio WWW (World Wide Web Publishing Service) e windows Process Activation Service (WAS).

Listener del protocollo

I listener del protocollo ricevono richieste specifiche del protocollo, le inviano a IIS per l'elaborazione e quindi restituiscono risposte ai richiedenti. Ad esempio, quando un browser client richiede una pagina Web da Internet, il listener HTTP, HTTP.sys, preleva la richiesta e la invia a IIS per l'elaborazione. Dopo l'elaborazione della richiesta da parte di IIS, HTTP.sys restituisce una risposta al browser client.

Per impostazione predefinita, IIS fornisce HTTP.sys come listener del protocollo in ascolto delle richieste HTTP e HTTPS. HTTP.sys è stato introdotto in IIS 6.0 come listener di protocollo specifico per HTTP per le richieste HTTP. HTTP.sys rimane il listener HTTP in IIS 7 e versioni successive, ma include il supporto per Secure Sockets Layer (SSL).

Per supportare servizi e applicazioni che usano protocolli diversi da HTTP e HTTPS, è possibile usare tecnologie come Windows Communication Foundation (WCF). WCF dispone di adattatori listener che forniscono la funzionalità di un listener del protocollo e di un adattatore listener. Gli adattatori listener vengono trattati più avanti in questo documento. Per altre informazioni su WCF, vedere Windows Communication Foundation su MSDN.

Stack del protocollo di trasferimento hypertext (HTTP.sys)

Il listener HTTP fa parte del sottosistema di rete dei sistemi operativi Windows e viene implementato come driver di dispositivo in modalità kernel denominato stack HTTP (HTTP.sys). HTTP.sys resta in ascolto delle richieste HTTP dalla rete, passa le richieste a IIS per l'elaborazione e quindi restituisce risposte elaborate ai browser client.

In IIS 6.0 HTTP.sys sostituito l'API Windows Sockets (Winsock), un componente in modalità utente usato dalle versioni precedenti di IIS per ricevere richieste HTTP e inviare risposte HTTP. IIS 7 e versioni successive continuano a basarsi su HTTP.sys per le richieste HTTP.

HTTP.sys offre i vantaggi seguenti:

  • Memorizzazione nella cache in modalità kernel. Le richieste di risposte memorizzate nella cache vengono gestite senza passare alla modalità utente.
  • Accodamento delle richieste in modalità kernel. Le richieste comportano un sovraccarico inferiore nel cambio di contesto perché il kernel inoltra le richieste direttamente al processo di lavoro corretto. Se non è disponibile alcun processo di lavoro per accettare una richiesta, la coda di richieste in modalità kernel mantiene la richiesta fino a quando non viene prelevata da un processo di lavoro.
  • Richiedere il filtro di pre-elaborazione e sicurezza.

World Wide Web Publishing Service (servizio WWW)

In IIS 7 e versioni successive, le funzionalità precedentemente gestite dal World Wide Web Publishing Service (servizio WWW) sono ora suddivise tra due servizi: il servizio WWW e un nuovo servizio, Il servizio di attivazione dei processi di Windows (WAS). Questi due servizi vengono eseguiti come LocalSystem nello stesso processo di Svchost.exe e condividono gli stessi file binari.

Nota

È anche possibile vedere il servizio WWW denominato W3SVC nella documentazione.

Funzionamento del servizio WWW in IIS 6.0

In IIS 6.0, il servizio WWW gestisce le aree principali seguenti in IIS:

  • Amministrazione e configurazione HTTP
  • Gestione dei processi
  • Monitoraggio delle prestazioni

Amministrazione e configurazione HTTP

Il servizio WWW legge le informazioni di configurazione dalla metabase IIS e le usa per configurare e aggiornare il listener HTTP HTTP.sys. Inoltre, il servizio WWW avvia, arresta, monitora e gestisce i processi di lavoro che elaborano le richieste HTTP.

Monitoraggio delle prestazioni

Il servizio WWW monitora le prestazioni e fornisce contatori delle prestazioni per i siti Web e per la cache IIS.

Gestione dei processi

Il servizio WWW gestisce i pool di applicazioni e i processi di lavoro, ad esempio l'avvio, l'arresto e il riciclo dei processi di lavoro. Inoltre, il servizio WWW monitora l'integrità dei processi di lavoro e richiama il rilevamento rapido degli errori per impedire l'avvio di nuovi processi quando diversi processi di lavoro hanno esito negativo in un periodo di tempo configurabile.

Funzionamento del servizio WWW in IIS

In IIS il servizio WWW non gestisce più i processi di lavoro. Il servizio WWW è invece l'adattatore listener per il listener HTTP, HTTP.sys. Come adattatore del listener, il servizio WWW è principalmente responsabile della configurazione HTTP.sys, dell'aggiornamento HTTP.sys in caso di modifiche alla configurazione e della notifica di WAS quando una richiesta entra nella coda delle richieste.

Inoltre, il servizio WWW continua a raccogliere i contatori per i siti Web. Poiché i contatori delle prestazioni rimangono parte del servizio WWW, sono specifici di HTTP e non si applicano a WAS.

Servizio di attivazione dei processi di Windows (WAS, Windows Process Activation Service)

In IIS 7 e versioni successive, Il servizio di attivazione dei processi di Windows (WAS) gestisce la configurazione del pool di applicazioni e i processi di lavoro anziché il servizio WWW. In questo modo è possibile usare lo stesso modello di configurazione e processo per i siti HTTP e non HTTP.

Inoltre, è possibile eseguire WAS senza il servizio WWW se non è necessaria la funzionalità HTTP. Ad esempio, è possibile gestire un servizio Web tramite un adattatore listener WCF, ad esempio NetTcpActivator, senza eseguire il servizio WWW se non è necessario ascoltare le richieste HTTP in HTTP.sys. Per informazioni sugli adattatori listener WCF e su come ospitare applicazioni WCF in IIS 7 e versioni successive tramite WAS, vedere Hosting in WCF in MSDN.

Gestione della configurazione in WAS

All'avvio WAS legge determinate informazioni dal file ApplicationHost.config e le passa alle schede del listener nel server. Gli adattatori listener sono componenti che stabiliscono la comunicazione tra listener WAS e protocollo, ad esempio HTTP.sys. Dopo che gli adattatori listener ricevono le informazioni di configurazione, configurano i listener di protocollo correlati e preparano i listener per l'ascolto delle richieste.

Nel caso di WCF, un adattatore listener include la funzionalità di un listener di protocollo. Pertanto, un adattatore listener WCF, ad esempio NetTcpActivator, viene configurato in base alle informazioni di WAS. Dopo aver configurato NetTcpActivator, rimane in ascolto delle richieste che usano il protocollo net.tcp. Per altre informazioni sugli adattatori listener WCF, vedere Architettura di attivazione WAS su MSDN.

L'elenco seguente descrive il tipo di informazioni lette da WAS dalla configurazione:

  • Informazioni sulla configurazione globale
  • Informazioni di configurazione del protocollo per i protocolli HTTP e non HTTP
  • Configurazione del pool di applicazioni, ad esempio le informazioni sull'account di processo
  • Configurazione del sito, ad esempio associazioni e applicazioni
  • Configurazione dell'applicazione, ad esempio i protocolli abilitati e i pool di applicazioni a cui appartengono le applicazioni

Se ApplicationHost.config modifiche, WAS riceve una notifica e aggiorna gli adattatori listener con le nuove informazioni.

Gestione dei processi

WAS gestisce i pool di applicazioni e i processi di lavoro per le richieste HTTP e non HTTP. Quando un listener di protocollo preleva una richiesta client, WAS determina se un processo di lavoro è in esecuzione o meno. Se un pool di applicazioni dispone già di un processo di lavoro che gestisce le richieste, l'adattatore listener passa la richiesta al processo di lavoro per l'elaborazione. Se nel pool di applicazioni non è presente alcun processo di lavoro, WAS avvierà un processo di lavoro in modo che l'adattatore del listener possa passare la richiesta per l'elaborazione.

Nota

Poiché WAS gestisce i processi per i protocolli HTTP e non HTTP, è possibile eseguire applicazioni con protocolli diversi nello stesso pool di applicazioni. Ad esempio, è possibile sviluppare un'applicazione, ad esempio un servizio XML, e ospitarla su HTTP e net.tcp.

Modules in IIS (Introduzione alle architetture IIS: moduli di IIS)

IIS offre una nuova architettura diversa dalle versioni precedenti di IIS. Invece di mantenere la maggior parte delle funzionalità all'interno del server stesso, IIS include un motore server Web in cui è possibile aggiungere o rimuovere componenti, denominati moduli, a seconda delle esigenze.

I moduli sono singole funzionalità usate dal server per elaborare le richieste. Ad esempio, IIS usa i moduli di autenticazione per autenticare le credenziali client e memorizzare nella cache i moduli per gestire l'attività della cache.

La nuova architettura offre i vantaggi seguenti rispetto alle versioni precedenti di IIS:

  • È possibile controllare i moduli desiderati nel server.
  • È possibile personalizzare un server in base a un ruolo specifico nell'ambiente.
  • È possibile usare moduli personalizzati per sostituire i moduli esistenti o per introdurre nuove funzionalità.

La nuova architettura migliora anche la sicurezza e semplifica l'amministrazione. Rimuovendo i moduli non necessari, si riduce la superficie di attacco e il footprint di memoria del server, ovvero la quantità di memoria usata dal server worker nel computer. È anche possibile eliminare la necessità di gestire le funzionalità non necessarie per i siti e le applicazioni.

Moduli nativi

Le sezioni seguenti descrivono i moduli nativi disponibili con un'installazione completa di IIS 7 e versioni successive. È possibile rimuoverli o sostituirli con moduli personalizzati, a seconda delle esigenze.

Moduli HTTP

Diversi moduli in IIS 7 e versioni successive eseguono attività specifiche del protocollo HTTP (Hypertext Transfer Protocol) nella pipeline di elaborazione delle richieste. I moduli HTTP includono moduli per rispondere alle informazioni e alle richieste inviate nelle intestazioni client, per restituire errori HTTP, reindirizzare le richieste e altro ancora.

Nome del modulo Descrizione Risorsa
CustomErrorModule Invia messaggi di errore HTTP predefiniti e configurati quando viene impostato un codice di stato di errore in una risposta. Inetsrv\Custerr.dll
HttpRedirectionModule Supporta il reindirizzamento configurabile per le richieste HTTP. Inetsrv\Redirect.dll
ProtocolSupportModule Esegue azioni correlate al protocollo, ad esempio l'impostazione delle intestazioni di risposta e il reindirizzamento delle intestazioni in base alla configurazione. Inetsrv\Protsup.dll
RequestFilteringModule Aggiunta in IIS 7.5. Filtra le richieste configurate per controllare il protocollo e il comportamento del contenuto. Inetsrv\modrqflt.dll
WebDAVModule Aggiunta in IIS 7.5. Consente una pubblicazione più sicura del contenuto tramite HTTP tramite SSL. Inetsrv\WebDAV.dll

Moduli di sicurezza

Diversi moduli in IIS eseguono attività correlate alla sicurezza nella pipeline di elaborazione delle richieste. Sono inoltre disponibili moduli separati per ognuno degli schemi di autenticazione, che consentono di selezionare i moduli per i tipi di autenticazione desiderati nel server. Sono inoltre disponibili moduli che eseguono l'autorizzazione URL e un modulo che filtra le richieste.

Nome del modulo Descrizione Risorsa
AnonymousAuthenticationModule Esegue l'autenticazione anonima quando nessun altro metodo di autenticazione ha esito positivo. Inetsrv\Authanon.dll
BasicAuthenticationModule Esegue l'autenticazione di base. Inetsrv\Authbas.dll
CertificateMappingAuthenticationModule Esegue l'autenticazione di mapping dei certificati tramite Active Directory. Inetsrv\Authcert.dll
DigestAuthenticationModule Esegue l'autenticazione digest. Inetsrv\Authmd5.dll
IISCertificateMappingAuthenticationModule Esegue l'autenticazione di mapping dei certificati usando la configurazione del certificato IIS. Inetsrv\Authmap.dll
RequestFilteringModule Esegue attività URLScan, ad esempio la configurazione di verbi e estensioni di file consentiti, l'impostazione dei limiti e l'analisi di sequenze di caratteri non valido. Inetsrv\Modrqflt.dll
Urlauthorizationmodule Esegue l'autorizzazione url. Inetsrv\Urlauthz.dll
Windowsauthenticationmodule Esegue l'autenticazione integrata NTLM. Inetsrv\Authsspi.dll
IpRestrictionModule Limita gli indirizzi IPv4 elencati nell'elenco ipSecurity nella configurazione. Inetsrv\iprestr.dll

Moduli di contenuto

Diversi moduli in IIS eseguono attività correlate al contenuto nella pipeline di elaborazione delle richieste. I moduli di contenuto includono moduli per elaborare le richieste di file statici, per restituire una pagina predefinita quando un client non specifica una risorsa in una richiesta, elencare il contenuto di una directory e altro ancora.

Nome del modulo Descrizione Risorsa
CgiModule Esegue processi CGI (Common Gateway Interface) per compilare l'output della risposta. Inetsrv\Cgi.dll
DefaultDocumentModule Tenta di restituire un documento predefinito per le richieste effettuate alla directory padre. Inetsrv\Defdoc.dll
DirectoryListingModule Elenca il contenuto di una directory. Inetsrv\dirlist.dll
IsapiModule Ospita DLL di estensione ISAPI. Inetsrv\Isapi.dll
IsapiFilterModule Supporta dll di filtro ISAPI. Inetsrv\Filter.dll
ServerSideIncludeModule I processi sul lato server includono codice. Inetsrv\Iis_ssi.dll
StaticFileModule Gestisce i file statici. Inetsrv\Static.dll
FastCgiModule Supporta FastCGI, che offre un'alternativa ad alte prestazioni a CGI. Inetsrv\iisfcgi.dll

Moduli di compressione

Due moduli in IIS eseguono la compressione nella pipeline di elaborazione delle richieste.

Nome del modulo Descrizione Risorsa
DynamicCompressionModule Comprime le risposte e applica il codice di trasferimento della compressione Gzip alle risposte. Inetsrv\Compdyn.dll
StaticCompressionModule Esegue la precompressione del contenuto statico. Inetsrv\Compstat.dll

Memorizzazione nella cache dei moduli

Diversi moduli in IIS eseguono attività correlate alla memorizzazione nella cache nella pipeline di elaborazione delle richieste. La memorizzazione nella cache migliora le prestazioni dei siti Web e delle applicazioni Web archiviando informazioni elaborate, ad esempio pagine Web, in memoria nel server e quindi riutilizzando tali informazioni nelle richieste successive per la stessa risorsa.

Nome del modulo Descrizione Risorsa
FileCacheModule Fornisce la memorizzazione nella cache in modalità utente per i file e gli handle di file. Inetsrv\Cachfile.dll
HTTPCacheModule Fornisce la modalità kernel e la memorizzazione nella cache in modalità utente in HTTP.sys. Inetsrv\Cachhttp.dll
TokenCacheModule Fornisce la memorizzazione nella cache in modalità utente delle coppie di nome utente e token per i moduli che producono entità utente di Windows. Inetsrv\Cachtokn.dll
UriCacheModule Fornisce la memorizzazione nella cache in modalità utente delle informazioni sull'URL. Inetsrv\Cachuri.dll

Moduli di registrazione e diagnostica

Diversi moduli in IIS eseguono attività correlate alla registrazione e alla diagnostica nella pipeline di elaborazione delle richieste. I moduli di registrazione supportano il caricamento di moduli personalizzati e il passaggio di informazioni a HTTP.sys. I moduli di diagnostica seguono e segnalano gli eventi durante l'elaborazione delle richieste.

Nome del modulo Descrizione Risorsa
CustomLoggingModule Carica moduli di registrazione personalizzati. Inetsrv\Logcust.dll
FailedRequestsTracingModule Supporta la funzionalità di traccia delle richieste non riuscite. Inetsrv\Iisfreb.dll
HttpLoggingModule Passa le informazioni e lo stato di elaborazione a HTTP.sys per la registrazione. Inetsrv\Loghttp.dll
RequestMonitorModule Tiene traccia delle richieste attualmente in esecuzione nei processi di lavoro e segnala informazioni con stato di runtime e controllo dell'interfaccia di programmazione dell'applicazione (RSCA). Inetsrv\Iisreqs.dll
TracingModule Segnala eventi a Microsoft Event Tracing for Windows (ETW). Inetsrv\Iisetw.dll

Moduli di supporto gestiti

Un paio di moduli in IIS supportano l'integrazione gestita nella pipeline di elaborazione delle richieste IIS.

Nome del modulo Descrizione Risorsa
ManagedEngine Fornisce l'integrazione di moduli di codice gestito nella pipeline di elaborazione delle richieste IIS. Microsoft.NET\Framework\v2.0.50727\webengine.dll
ConfigurationValidationModule Convalida i problemi di configurazione, ad esempio quando un'applicazione è in esecuzione in modalità integrata, ma ha gestori o moduli dichiarati nella sezione system.web. Inetsrv\validcfg.dll

Moduli gestiti

Oltre ai moduli nativi, IIS consente di usare moduli di codice gestito per estendere la funzionalità IIS. Alcuni moduli gestiti, ad esempio UrlAuthorization, hanno una controparte del modulo nativa che fornisce un'alternativa nativa al modulo gestito.

Nota

I moduli gestiti dipendono dal modulo ManagedEngine.

Nella tabella seguente sono elencati i moduli gestiti disponibili con un'installazione completa di IIS 7 e versioni successive. Per altre informazioni sui moduli gestiti, vedere .NET Framework SDK 2.0 su MSDN.

Nome del modulo Descrizione Risorsa
AnonymousIdentification Gestisce gli identificatori anonimi, usati dalle funzionalità che supportano l'identificazione anonima, ad esempio ASP.NET profilo. System.Web.Security.AnonymousIdentificationModule
DefaultAuthentication Garantisce che un oggetto di autenticazione sia presente nel contesto. System.Web.Security.DefaultAuthenticationModule
FileAuthorization Verifica che un utente disponga dell'autorizzazione per accedere al file richiesto. System.Web.Security.FileAuthorizationModule
FormsAuthentication Supporta l'autenticazione tramite l'autenticazione basata su form. System.Web.Security.FormsAuthenticationModule
OutputCache Supporta la memorizzazione nella cache dell'output. System.Web.Caching.OutputCacheModule
Profilo Gestisce i profili utente usando ASP.NET profilo, che archivia e recupera le impostazioni utente in un'origine dati, ad esempio un database. System.Web.Profile.ProfileModule
RoleManager Gestisce un'istanza RolePrincipal per l'utente corrente. System.Web.Security.RoleManagerModule
sessione Supporta la gestione dello stato della sessione, che consente l'archiviazione di dati specifici di un singolo client all'interno di un'applicazione nel server. System.Web.SessionState.SessionStateModule
UrlAuthorization Determina se all'utente corrente è consentito l'accesso all'URL richiesto, in base al nome utente o all'elenco dei ruoli di cui un utente è membro. System.Web.Security.UrlAuthorizationModule
UrlMappingsModule Supporta il mapping di un URL reale a un URL più intuitivo. System.Web.UrlMappingsModule
WindowsAuthentication Imposta l'identità dell'utente per un'applicazione ASP.NET quando viene attivata l'autenticazione di Windows. System.Web.Security.WindowsAuthenticationModule

Elaborazione delle richieste in IIS

In IIS, iis e ASP.NET pipeline di richiesta combinano per elaborare le richieste con un approccio integrato. La nuova architettura di elaborazione delle richieste è costituita da un elenco ordinato di moduli nativi e gestiti che eseguono attività specifiche in risposta alle richieste.

Questa progettazione offre diversi vantaggi rispetto alle versioni precedenti di IIS. In primo luogo, tutti i tipi di file possono usare funzionalità originariamente disponibili solo per il codice gestito. Ad esempio, è ora possibile usare ASP.NET autenticazione basata su form e autorizzazione URL (Uniform Resource Locator) per i file statici, i file ASP (Active Server Pages) e tutti gli altri tipi di file nei siti e nelle applicazioni.

In secondo luogo, questa progettazione elimina la duplicazione di diverse funzionalità in IIS e ASP.NET. Ad esempio, quando un client richiede un file gestito, il server chiama il modulo di autenticazione appropriato nella pipeline integrata per autenticare il client. Nelle versioni precedenti di IIS, questa stessa richiesta passa attraverso un processo di autenticazione sia nella pipeline IIS che nella pipeline ASP.NET.

In terzo luogo, è possibile gestire tutti i moduli in un'unica posizione, anziché gestire alcune funzionalità in IIS e alcune nella configurazione ASP.NET. Ciò semplifica l'amministrazione di siti e applicazioni nel server.

Pool di applicazioni in IIS

I pool di applicazioni separano le applicazioni in base ai limiti del processo per impedire a un'applicazione di influire su un'altra applicazione nel server. In IIS 7 e versioni successive i pool di applicazioni continuano a usare la modalità di isolamento del processo di lavoro IIS 6.0. È anche possibile specificare un'impostazione che determina come elaborare le richieste che coinvolgono risorse gestite: modalità integrata o modalità classica.

Nota

In IIS 6.0, la modalità di isolamento del processo di lavoro e la modalità di isolamento IIS 5.0 vengono impostate a livello di server. Ciò rende impossibile eseguire entrambe le modalità di isolamento nello stesso server. Tuttavia, in IIS 7 e versioni successive, la modalità integrata e la modalità classica sono impostate a livello di pool di applicazioni, che consente di eseguire le applicazioni contemporaneamente nei pool di applicazioni con modalità di processo diverse nello stesso server.

Modalità pool di applicazioni integrata

Quando un pool di applicazioni è in modalità integrata, è possibile sfruttare l'architettura integrata di elaborazione delle richieste di IIS e ASP.NET. Quando un processo di lavoro in un pool di applicazioni riceve una richiesta, la richiesta passa attraverso un elenco ordinato di eventi. Ogni evento chiama i moduli nativi e gestiti necessari per elaborare parti della richiesta e generare la risposta.

L'esecuzione di pool di applicazioni in modalità integrata offre diversi vantaggi. Prima di tutto, i modelli di elaborazione delle richieste di IIS e ASP.NET sono integrati in un modello di processo unificato. Questo modello elimina i passaggi precedentemente duplicati in IIS e ASP.NET, ad esempio l'autenticazione. La modalità integrata consente inoltre la disponibilità delle funzionalità gestite a tutti i tipi di contenuto.

Modalità pool di applicazioni classica

Quando un pool di applicazioni è in modalità classica, IIS 7 e versioni successive gestisce le richieste nello stesso modo di IIS 6.0 modalità di isolamento del processo di lavoro. ASP.NET le richieste passano prima alla procedura di elaborazione nativa in IIS e quindi vengono instradate a Aspnet_isapi.dll per l'elaborazione del codice gestito nel runtime gestito. Infine, la richiesta viene instradata tramite IIS per inviare la risposta.

Questa separazione dei modelli IIS e ASP.NET di elaborazione delle richieste comporta la duplicazione di alcuni passaggi di elaborazione, ad esempio l'autenticazione e l'autorizzazione. Inoltre, le funzionalità del codice gestito, ad esempio l'autenticazione basata su form, sono disponibili solo per ASP.NET applicazioni o applicazioni per cui è stato eseguito il mapping di tutte le richieste da gestire da aspnet_isapi.dll.

Assicurarsi di testare la compatibilità delle applicazioni esistenti in modalità integrata prima di aggiornare un ambiente di produzione a IIS 7 e versioni successive e assegnare applicazioni ai pool di applicazioni in modalità integrata. È consigliabile aggiungere un'applicazione a un pool di applicazioni in modalità classica solo se l'applicazione non funziona in modalità integrata. Ad esempio, l'applicazione potrebbe basarsi su un token di autenticazione passato da IIS al runtime gestito e, a causa della nuova architettura in IIS 7 e versioni successive, il processo interrompe l'applicazione.

Elaborazione di richieste HTTP in IIS

IIS 7 e versioni successive hanno un flusso di elaborazione delle richieste HTTP simile a IIS 6.0. I diagrammi di questa sezione forniscono una panoramica di una richiesta HTTP in fase di elaborazione.

L'elenco seguente descrive il flusso di elaborazione delle richieste illustrato nella figura 1:

  1. Quando un browser client avvia una richiesta HTTP per una risorsa nel server Web, HTTP.sys intercetta la richiesta.
  2. HTTP.sys contatti WAS per ottenere informazioni dall'archivio di configurazione.
  3. WAS richiede informazioni di configurazione dall'archivio di configurazione applicationHost.config.
  4. Il servizio WWW riceve informazioni di configurazione, ad esempio il pool di applicazioni e la configurazione del sito.
  5. Il servizio WWW utilizza le informazioni di configurazione per configurare HTTP.sys.
  6. WAS avvia un processo di lavoro per il pool di applicazioni a cui è stata effettuata la richiesta.
  7. Il processo di lavoro elabora la richiesta e restituisce una risposta a HTTP.sys.
  8. Il client riceve una risposta.

Diagramma che mostra un client in modalità kernel che interagisce con gli elementi in modalità utente, come descritto in precedenza.

Figura 1: Panoramica di una richiesta HTTP

In un processo di lavoro, una richiesta HTTP passa attraverso diversi passaggi ordinati, denominati eventi, nel server Web Core. A ogni evento, un modulo nativo elabora parte della richiesta, ad esempio l'autenticazione dell'utente o l'aggiunta di informazioni al registro eventi. Se una richiesta richiede un modulo gestito, il modulo ManagedEngine nativo crea un AppDomain, in cui il modulo gestito può eseguire l'elaborazione necessaria, ad esempio l'autenticazione di un utente con l'autenticazione basata su form. Quando la richiesta passa attraverso tutti gli eventi in Web Server Core, la risposta viene restituita a HTTP.sys. La figura 2 seguente mostra una richiesta HTTP che immette il processo di lavoro.

Il diagramma mostra il processo di lavoro, che contiene il server Web Core, collegato ai moduli nativi, collegato ad AppDomain.

Figura 2: Dettaglio di una richiesta HTTP all'interno del processo di lavoro