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:
- Quando un browser client avvia una richiesta HTTP per una risorsa nel server Web, HTTP.sys intercetta la richiesta.
- HTTP.sys contatti WAS per ottenere informazioni dall'archivio di configurazione.
- WAS richiede informazioni di configurazione dall'archivio di configurazione applicationHost.config.
- Il servizio WWW riceve informazioni di configurazione, ad esempio il pool di applicazioni e la configurazione del sito.
- Il servizio WWW utilizza le informazioni di configurazione per configurare HTTP.sys.
- WAS avvia un processo di lavoro per il pool di applicazioni a cui è stata effettuata la richiesta.
- Il processo di lavoro elabora la richiesta e restituisce una risposta a HTTP.sys.
- Il client riceve una risposta.
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.
Figura 2: Dettaglio di una richiesta HTTP all'interno del processo di lavoro