J'étais en train de déployer une application ASP.NET MVC la nuit dernière et j'ai découvert qu'il était moins fastidieux de déployer avec IIS7 défini en mode intégré. Ma question est quelle est la différence? Et quelles sont les implications de l'utilisation de l'un ou de l'autre?
Le mode classique (le seul mode dans IIS6 et inférieur) est un mode dans lequel IIS ne fonctionne qu'avec les extensions ISAPI et les filtres ISAPI directement. En fait, dans ce mode, ASP.NET est simplement une extension ISAPI (aspnet_isapi.dll) et un filtre ISAPI (aspnet_filter.dll). IIS considère simplement ASP.NET comme un plug-in externe implémenté dans ISAPI et fonctionne comme une boîte noire (et uniquement lorsqu'il est nécessaire de transmettre la demande à ASP.NET). Dans ce mode, ASP.NET n’est pas très différent de PHP ou d’autres technologies pour IIS.
Le mode intégré, en revanche, est un nouveau mode dans IIS7 dans lequel le pipeline IIS est étroitement intégré (c'est-à-dire identique) au pipeline de demandes ASP.NET. ASP.NET peut voir toutes les demandes qu’il veut et manipuler les éléments en cours de route. ASP.NET n'est plus traité comme un plugin externe. Il est complètement intégré et intégré à IIS. Dans ce mode, ASP.NET HttpModule
s ont pratiquement autant de puissance qu'un filtre ISAPI aurait eu et ASP.NET HttpHandler
s peut avoir une capacité presque équivalente à celle d'une extension ISAPI. Dans ce mode, ASP.NET fait essentiellement partie d’IIS.
Mode pool d'applications intégré
Lorsqu'un pool d'applications est en mode intégré, vous pouvez tirer parti de l'architecture intégrée de traitement des requêtes de IIS et ASP.NET. Lorsqu'un processus de travail d'un pool d'applications reçoit une demande, celle-ci passe à travers une liste d'événements. Chaque événement appelle les modules natifs et gérés nécessaires pour traiter des parties de la demande et générer la réponse.
L'exécution de pools d'applications en mode intégré présente plusieurs avantages. D'abord, les modèles de traitement des demandes de IIS et ASP.NET sont intégrés dans un modèle de processus unifié. Ce modèle élimine les étapes précédemment dupliquées dans IIS et ASP.NET, telles que l'authentification. De plus, le mode intégré permet la disponibilité de fonctionnalités gérées pour tous les types de contenu.
Mode de pool d'applications classique
Lorsqu'un pool d'applications est en mode classique, IIS 7.0 traite les demandes comme dans le mode d'isolation IIS 6.0. Les demandes ASP.NET suivent d’abord les étapes de traitement natif dans IIS, puis sont acheminées vers Aspnet_isapi.dll pour le traitement du code géré dans le runtime géré. Enfin, la demande est réacheminée via IIS pour envoyer la réponse.
Cette séparation des modèles de traitement des demandes IIS et ASP.NET entraîne la duplication de certaines étapes de traitement, telles que l'authentification et l'autorisation. En outre, les fonctionnalités de code géré, telles que l'authentification par formulaire, ne sont disponibles que pour les applications ASP.NET ou les applications pour lesquelles un script a mappé toutes les demandes devant être traitées par aspnet_isapi.dll.
Assurez-vous de tester la compatibilité de vos applications existantes en mode intégré avant de mettre à niveau un environnement de production vers IIS 7.0 et d'assigner des applications à des pools d'applications en mode intégré. Vous ne devez ajouter une application à un pool d'applications en mode classique que si l'application ne fonctionne pas en mode intégré. Par exemple, votre application peut s’appuyer sur un jeton d’authentification passé de IIS au moteur d’exécution géré. En raison de la nouvelle architecture de IIS 7.0, le processus interrompt votre application.
Extrait de: Quelle est la différence entre DefaultAppPool et Classic .NET AppPool dans IIS7?
Source originale: Introduction à IIS Architecture
En mode classique, IIS fonctionne h avec les extensions ISAPI et les filtres ISAPI directement. Et utilise deux lignes de conduite, une pour le code natif et une autre pour le code géré. Vous pouvez simplement dire qu'en mode classique IIS 7.x fonctionne exactement comme IIS 6 et que vous n'obtenez pas d'avantages supplémentaires des fonctionnalités de IIS 7.x.
En mode intégré, IIS et ASP.Net sont étroitement couplés au lieu de ne dépendre que de deux DLL sur Asp.net, comme dans le cas du mode classique.