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 en 2 phrases claires :)
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 en 2 phrases claires :)
Réponses:
HttpHandler est l'endroit où le train de demandes se dirige. HttpModule est une station en cours de route.
Les deux phrases:
Un HttpModule s'exécutera pour chaque requête adressée à votre application, quelle que soit l'extension, et est généralement utilisé pour des choses comme la sécurité, les statistiques, la journalisation, etc.
Un HttpHandler est généralement associé à une extension spécifique, et est utilisé pour des choses comme les flux RSS, la génération ou la modification d'image dynamique, etc.
Un peu plus d'explication si ce n'est pas tout à fait clair:
La façon dont je pense à eux - les modules "se connectent" au pipeline de requêtes, 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 seul s'exécutera pour une requête à 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
ProcessRequest
. Le module, d'autre part, s'exécutera à tout moment du cycle de vie auquel vous le câblez. Pour votre scénario de vouloir exécuter quelque chose avant la page aspx, vous voulez un module. Cependant, vous devez filtrer manuellement les demandes vers les pages qui ne sont pas .aspx
L'objectif principal et commun de HttpHandler et HttpModule est d'injecter une logique de prétraitement avant que la demande ASP.NET n'atteigne le serveur IIS.
ASP.NET fournit deux façons d'injecter de la logique dans le pipeline de requêtes;
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 y a trois étapes impliquées dans la création de 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) à aspnet_isapi.dll dans IIS.
L'interface IHttpHandler a la méthode ProcessRequest et la propriété IsReusable qui doivent être implémentées. 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: ici, nous traitons tout nom de fichier avec l'extension arshad.
Le moteur ASP.NET émet de nombreux événements lorsque la demande passe par le pipeline de demandes. Certains de ces événements sont AuthenticateRequest, AuthorizeRequest, BeginRequest, EndRequest. En utilisant HttpModule, vous pouvez écrire la logique dans ces événements. Ces logiques sont exécutées lorsque les événements se déclenchent et avant que la demande n'atteigne IIS.
La création de modules comporte 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.
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 d'agir en fonction de la demande.
HttpHandler est responsable de la gestion des requêtes http par extension pendant que HttpModule répond aux événements du cycle de vie de l'application.
Bel article à propos de ce HttpModule-and-HttpHandlers
Référence: INFO: Présentation des modules HTTP et des gestionnaires HTTP ASP.NET
«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 demande individuelle. Les gestionnaires sont utilisés pour traiter les demandes de point de terminaison individuelles. Les gestionnaires permettent à ASP.NET Framework de traiter des URL HTTP individuelles ou des groupes d'extensions d'URL dans une application. Contrairement aux modules, un seul gestionnaire est utilisé pour traiter une requête ».
Le gestionnaire HTTP est l'endroit où la compilation est effectuée en fonction des paramètres. comme si l'extension de page est .aspx, il sera compilé via system.web.Ui.Pagahandlefactory. une fois la compilation effectuée, la demande de descripteur HTTP passera par le module HTTP et IIS.
Gestionnaire HTTP
HTTP Handler est le processus qui s'exécute en réponse à une requête HTTP. Ainsi, chaque fois que l'utilisateur demande un fichier, il est traité par le gestionnaire en fonction de l'extension. Ainsi, des gestionnaires http personnalisés sont créés lorsque vous avez besoin d'une gestion spéciale basée sur l'extension de nom de fichier. Prenons un exemple pour créer du RSS pour un site. Alors, créez un gestionnaire qui génère du XML au format RSS. Liez maintenant l'extension .rss au gestionnaire personnalisé.
Modules HTTP
Les modules HTTP sont connectés au cycle de vie d'une requête. Ainsi, lorsqu'une demande est traitée, elle passe par tous les modules du pipeline de la demande. Les modules http sont donc généralement utilisés pour:
Sécurité: pour authentifier une demande avant qu'elle ne soit traitée.
Statistiques et journalisation: puisque les modules sont appelés pour chaque demande, ils peuvent être utilisés pour collecter des statistiques et pour enregistrer des informations.
En-tête personnalisé: puisque la réponse peut être modifiée, on peut ajouter des informations d'en-tête personnalisées à la réponse.