web-dev-qa-db-fra.com

Gestionnaire HTTP vs module HTTP

Quelqu'un peut-il expliquer en moins de 2 phrases la différence entre les deux? Oui, je sais que Google peut fournir des centaines de réponses, mais pas une phrase claire sur deux :)

138
frenchie

HttpHandler est l'endroit où le train de demande est dirigé. HttpModule est une station en cours de route.

297
muratgu

Les deux phrases:

Un HttpModule s'exécutera pour chaque requête de votre application, quelle que soit son extension, et est généralement utilisé pour des tâches telles que la sécurité, les statistiques, la journalisation, etc.

Un HttpHandler est généralement associé à une extension spécifique et est utilisé pour des tâches telles que les flux RSS, la génération ou la modification d'images dynamiques, etc.

Un peu plus d'explication si ce n'est pas tout à fait clair:

La façon dont je les considère - les modules se "connectent" au pipeline de demandes, tandis que les gestionnaires "gèrent" une extension de fichier spécifique. Donc, si vous avez un site avec un LoggingModule et un PdfHandler, les deux s'exécuteront pour une requête à http://example.com/sample.pdf , et le module de journalisation s'exécutera seul pour une demande à http://example.com/page.aspx .

Il existe un article assez clair sur la différence sur MSDN: Présentation des gestionnaires HTTP et des modules HTTP

197
Jon Galloway

L'objectif principal et commun de HttpHandler et de HttpModule est d'injecter une logique de prétraitement avant que la demande ASP.NET atteigne le serveur IIS Server.

ASP.NET fournit deux manières d’injecter de la logique dans le pipeline de demandes;

  1. Gestionnaires Http: Http Handler nous aide à injecter une logique de pré-traitement en fonction de l'extension du nom de fichier demandé. ASP.NET utilise des gestionnaires HTTP pour implémenter ses propres fonctionnalités. Par exemple, ASP.NET utilise des gestionnaires pour le traitement des fichiers .aspx, .asmx et trace.axd.

exemple: Flux RSS: Pour créer un flux RSS pour un site Web, vous pouvez créer un gestionnaire qui émet du XML au format RSS. Ainsi, lorsque les utilisateurs envoient une demande à votre site qui se termine par .rss, ASP.NET appelle votre gestionnaire pour traiter la demande.

Il existe trois étapes pour créer Handler 1. Implémentez l'interface IHttpHandler. 2. Enregistrez le gestionnaire dans le fichier web.config ou machine.config. 3. Mappez l'extension de fichier (* .arshad) sur aspnet_isapi.dll dans IIS.

L'interface IHttpHandler a la méthode ProcessRequest et la propriété IsReusable à implémenter. ProcessRequest: dans cette méthode, vous écrivez le code qui produit la sortie pour le gestionnaire. IsResuable: cette propriété indique si ce gestionnaire peut être réutilisé ou non.

Vous pouvez enregistrer le gestionnaire dans le fichier web.config comme ceci

<httpHandlers>
   <add verb="*" path="*.arshad" type="namespace.classname, assemblyname" />
</httpHandlers>

Remarque: nous traitons ici tout nom de fichier avec l'extension arshad.

  1. Http Modules: HttpModule est un processeur basé sur les événements qui permet d’injecter une logique de prétraitement avant que la demande n’atteigne le serveur IIS. Le serveur. gestion de session et mise en cache de sortie, etc.

Le moteur ASP.NET émet de nombreux événements lorsque la requête passe par le pipeline de requêtes. Certains de ces événements sont AuthenticateRequest, AuthorizeRequest, BeginRequest, EndRequest. En utilisant HttpModule, vous pouvez écrire une logique dans ces événements. Cette logique est exécutée lorsque les événements se déclenchent et avant que la demande n'atteigne IIS.

La création de modules implique deux étapes: 1. Implémentation de l'interface IHttpModule 2. Enregistrement du module dans le fichier web.config ou machine.config

exemple: Sécurité: à l'aide du module HTTP, vous pouvez effectuer une authentification personnalisée ou d'autres contrôles de sécurité avant que la demande n'atteigne IIS.

20
Mohammed Arshad

Le gestionnaire HTTP est le processus qui s'exécute en réponse à une demande adressée à une application Web ASP.NET. Les modules HTTP vous permettent d'examiner les demandes entrantes et sortantes et de prendre des mesures en fonction de la demande.

19
StephenLembert

HttpHandler est responsable du traitement de la requête http par extension tandis que HttpModule répond aux événements du cycle de vie de l'application.

5
marvelTracker

Bel article à propos de ça HttpModule-and-HttpHandlers

Référence: INFO: Vue d'ensemble des modules HTTP ASP.NET et des gestionnaires HTTP

"Les modules sont appelés avant et après l'exécution du gestionnaire. Les modules permettent aux développeurs d'intercepter, de participer ou de modifier chaque requête. Les gestionnaires sont utilisés pour traiter les demandes de points de terminaison individuelles. Les gestionnaires permettent à ASP.NET Framework de traiter des URL HTTP individuelles ou des groupes d’extensions d’URL au sein d’une application. Contrairement aux modules, un seul gestionnaire est utilisé pour traiter une demande ".

2
smily

Le gestionnaire HTTP est l'endroit où la compilation est réellement effectuée en fonction des paramètres. Par exemple, si l'extension de page est .aspx, elle sera compilée via system.web.Ui.Pagahandlefactory. Une fois la compilation terminée, la demande de traitement HTTP ira via le module HTTP et IIS.

1
Dadan Tiwari