Ieri sera stavo distribuendo un'applicazione ASP.NET MVC e ho scoperto che è meno lavoro implementare con IIS7 impostato in modalità integrata. La mia domanda è: qual è la differenza? E quali sono le implicazioni dell'uso dell'uno o dell'altro?
Ieri sera stavo distribuendo un'applicazione ASP.NET MVC e ho scoperto che è meno lavoro implementare con IIS7 impostato in modalità integrata. La mia domanda è: qual è la differenza? E quali sono le implicazioni dell'uso dell'uno o dell'altro?
Risposte:
La modalità classica (l'unica modalità in IIS6 e precedenti) è una modalità in cui IIS funziona solo con estensioni ISAPI e filtri ISAPI direttamente. In effetti, in questa modalità, ASP.NET è solo un'estensione ISAPI (aspnet_isapi.dll) e un filtro ISAPI (aspnet_filter.dll). IIS tratta semplicemente ASP.NET come un plugin esterno implementato in ISAPI e funziona con esso come una scatola nera (e solo quando è necessario distribuire la richiesta ad ASP.NET). In questa modalità, ASP.NET non è molto diverso da PHP o altre tecnologie per IIS.
La modalità integrata, d'altra parte, è una nuova modalità in IIS7 in cui la pipeline IIS è strettamente integrata (ovvero è la stessa) della pipeline di richieste ASP.NET. ASP.NET può vedere ogni richiesta che desidera e manipolare le cose lungo la strada. ASP.NET non è più trattato come un plugin esterno. È completamente miscelato e integrato in IIS. In questa modalità, ASP.NET HttpModule
ha praticamente la stessa potenza di un filtro ISAPI e ASP.NET HttpHandler
può avere capacità quasi equivalenti come un'estensione ISAPI. In questa modalità, ASP.NET è fondamentalmente una parte di IIS.
HttpModules
metodi / eventi in iis7
ha più funzionalità rispetto a in iis6
? puoi approfondire questo?
Modalità pool di applicazioni integrate
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.
Esistono diversi vantaggi nell'esecuzione di pool di applicazioni in modalità integrata. Innanzitutto 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, come l'autenticazione. Inoltre, la modalità integrata consente la disponibilità delle funzionalità gestite per tutti i tipi di contenuto.
Modalità pool di applicazioni classico
Quando un pool di applicazioni è in modalità classica, IIS 7.0 gestisce le richieste come nella modalità di isolamento del processo di lavoro di IIS 6.0. Le richieste ASP.NET eseguono prima le fasi di elaborazione nativa in IIS e vengono quindi instradate su Aspnet_isapi.dll per l'elaborazione del codice gestito nel runtime gestito. Infine, la richiesta viene reindirizzata tramite IIS per inviare la risposta.
Questa separazione dei modelli di elaborazione delle richieste IIS e ASP.NET comporta la duplicazione di alcune fasi di elaborazione, come l'autenticazione e l'autorizzazione. Inoltre, le funzionalità del codice gestito, come l'autenticazione basata su moduli, sono disponibili solo per le applicazioni ASP.NET o per le applicazioni per le quali è stato mappato lo script tutte le richieste che devono essere gestite 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.0 e assegnare le applicazioni ai pool di applicazioni in modalità integrata. È necessario aggiungere un'applicazione a un pool di applicazioni in modalità classica se l'applicazione non funziona in modalità integrata. Ad esempio, l'applicazione potrebbe fare affidamento su un token di autenticazione passato da IIS al runtime gestito e, a causa della nuova architettura in IIS 7.0, il processo interrompe l'applicazione.
Tratto da: Qual è la differenza tra DefaultAppPool e Classic .NET AppPool in IIS7?
Fonte originale: Introduzione all'architettura IIS
IIS 6.0 e versioni precedenti:
ASP.NET integrato con IIS tramite un'estensione ISAPI, un'API C (API basata sul linguaggio di programmazione C) ed esposto la propria applicazione e il modello di elaborazione delle richieste.
Ciò ha effettivamente rivelato due pipeline separate di server (richiesta / risposta), una per i filtri ISAPI nativi e i componenti di estensione, e un'altra per i componenti dell'applicazione gestiti. I componenti ASP.NET verrebbero eseguiti interamente all'interno della bolla di estensione ISAPI ASP.NET E SOLO per le richieste associate ad ASP.NET nella configurazione della mappa di script IIS.
Richieste a tipi di contenuto non ASP.NET: - immagini, file di testo, pagine HTML e pagine ASP senza script, sono state elaborate da IIS o altre estensioni ISAPI e NON erano visibili ad ASP.NET.
La principale limitazione di questo modello era che i servizi forniti dai moduli ASP.NET e il codice dell'applicazione ASP.NET personalizzato NON erano disponibili per le richieste non ASP.NET
Che cos'è una MAPPA SCRIPT?
Le mappe di script vengono utilizzate per associare le estensioni di file al gestore ISAPI che viene eseguito quando viene richiesto quel tipo di file. La mappa degli script ha anche un'impostazione opzionale che verifica l'esistenza del file fisico associato alla richiesta prima di consentire l'elaborazione della richiesta
Un buon esempio può essere seen here
IIS 7 e versioni successive
IIS 7.0 e versioni successive sono stati riprogettati da zero per fornire un nuovissimo ISAPI basato su API C ++.
IIS 7.0 e versioni successive integrano il runtime ASP.NET con le funzionalità principali del server Web, fornendo una pipeline di elaborazione delle richieste unificata (singola) esposta a componenti nativi e gestiti noti come moduli (IHttpModules)
Ciò significa che IIS 7 elabora le richieste che arrivano per qualsiasi tipo di contenuto, con entrambi NON ASP.NET Modules / native IIS modules
e ASP.NET modules
fornendo l'elaborazione delle richieste in tutte le fasi Questo è il motivo per cui i tipi di contenuto NON ASP.NET (.html, file statici) possono essere gestiti dai moduli .NET .
IHttpModule
) che hanno la capacità di essere eseguiti per tutto il contenuto dell'applicazione e hanno fornito un set avanzato di servizi di elaborazione delle richieste all'applicazione.IHttpHandler
)In modalità classica IIS funziona direttamente con estensioni ISAPI e filtri ISAPI. E utilizza due linee di tubazioni, una per il codice nativo e l'altra per il codice gestito. Si può semplicemente dire che in modalità classica IIS 7.x funziona esattamente come IIS 6 e non si ottengono benefici extra dalle funzionalità di IIS 7.x.
In modalità integrata IIS e ASP.Net sono strettamente accoppiati anziché in base a due sole DLL su Asp.net come nel caso della modalità classica.