web-dev-qa-db-fra.com

Qu'est-ce qu'un HttpHandler dans ASP.NET?

Qu'est-ce qu'un HttpHandler dans ASP.NET? Pourquoi et comment est-il utilisé?

60
Nikola Stjelja

En termes simples, un ASP.NET HttpHandler est une classe qui implémente l'interface System.Web.IHttpHandler

Les HTTPHandlers ASP.NET sont responsables de l'interception des demandes adressées à votre serveur d'applications Web ASP.NET. Ils s'exécutent en tant que processus en réponse à une demande adressée au site ASP.NET. Le gestionnaire le plus courant est un gestionnaire de page ASP.NET qui traite les fichiers .aspx. Lorsque les utilisateurs demandent un fichier .aspx, la demande est traitée par la page via le gestionnaire de pages. 

ASP.NET offre quelques gestionnaires HTTP par défaut :

  • Page Handler (.aspx): gère les pages Web
  • User Control Handler (.ascx): gère les pages de contrôle de l'utilisateur Web
  • Gestionnaire de service Web (.asmx): gère les pages de service Web
  • Gestionnaire de trace (trace.axd): gère la fonctionnalité de trace

Vous pouvez créer vos propres gestionnaires HTTP personnalisés qui rendent une sortie personnalisée au navigateur. Les scénarios typiques pour les gestionnaires HTTP dans ASP.NET sont par exemple

  • livraison d'images créées dynamiquement (par exemple des graphiques) ou des images redimensionnées.
  • Flux RSS qui émettent du XML formaté par RSS

Vous implémentez l'interface IHttpHandler pour créer un gestionnaire synchrone et l'interface IHttpAsyncHandler pour créer un gestionnaire asynchrone. Les interfaces nécessitent l'implémentation de la méthode ProcessRequest et de la propriété IsReusable.

La méthode ProcessRequest gère le traitement réel des demandes effectuées, tandis que la propriété Boolean IsReusable spécifie si votre gestionnaire peut être mis en pool pour être réutilisé (pour améliorer les performances) ou si un nouveau gestionnaire est requis pour chaque demande.

74
splattne

HttpHandler (ou IHttpHandler) est fondamentalement tout ce qui est responsable de la diffusion de contenu. Une page ASP.NET (aspx) est un type de gestionnaire.

Vous pouvez par exemple écrire les vôtres pour servir des images, etc. depuis une base de données plutôt que depuis le serveur Web lui-même, ou pour écrire un simple service POX (plutôt que SOAP/WCF/etc).

14
Marc Gravell

Exemple HttpHandler,

Gestionnaire HTTP dans ASP.NET 2.0

Un gestionnaire est responsable de répondre aux demandes d'un navigateur. Les demandes gérées par un navigateur sont gérées par une extension de fichier ou par un appel direct au gestionnaire. L'API de requête et de réponse de niveau inférieur servant à traiter les demandes HTTP entrantes sont des gestionnaires HTTP dans Asp.Net. Tous les gestionnaires implémentent l'interface IHttpHandler, située dans l'espace de noms System.Web. Les gestionnaires sont quelque peu analogues aux extensions ISAPI (Internet Server Application Programming Interface).

Vous implémentez l'interface IHttpHandler pour créer un gestionnaire synchrone et l'interface IHttpAsyncHandler pour créer un gestionnaire asynchrone. Les interfaces nécessitent l'implémentation de la méthode ProcessRequest et de la propriété IsReusable. La méthode ProcessRequest gère le traitement réel des demandes effectuées, tandis que la propriété Boolean IsReusable spécifie si votre gestionnaire peut être mis en pool pour être réutilisé afin d'améliorer les performances ou si un nouveau gestionnaire est requis pour chaque demande.

L'extension de fichier .ashx est réservée aux gestionnaires personnalisés. Si vous créez un gestionnaire personnalisé avec une extension de nom de fichier .ashx, il sera automatiquement enregistré dans IIS et ASP.NET. Si vous choisissez d'utiliser une autre extension de fichier, vous devrez l'enregistrer dans IIS et dans ASP.NET. L'avantage d'utiliser une extension autre que .ashx est que vous pouvez affecter plusieurs extensions de fichier à un seul gestionnaire.

Configuration des gestionnaires HTTP

Le gestionnaire de section de configuration est responsable du mappage des URL entrantes sur la classe IHttpHandler ou IHttpHandlerFactory. Il peut être déclaré au niveau de l'ordinateur, du site ou de l'application. Les sous-répertoires héritent de ces paramètres . Les administrateurs utilisent la directive tag pour configurer la section. les directives sont interprétées et traitées dans un ordre séquentiel descendant. Utilisez la syntaxe suivante pour le gestionnaire de section:

Création de gestionnaires HTTP

Pour créer un gestionnaire HTTP, vous devez implémenter l'interface IHttpHandler. L'interface IHttpHandler a une méthode et une propriété avec les signatures suivantes: Void ProcessRequest (HttpContext); Bool IsReusable {get;}

2
Santosh Wavare

Un gestionnaire ASP.NET HTTP est le processus (souvent appelé "noeud final") qui s'exécute en réponse à une demande adressée à une application Web ASP.NET. Le gestionnaire le plus courant est un gestionnaire de page ASP.NET qui traite les fichiers .aspx. Lorsque les utilisateurs demandent un .aspx file, la demande est traitée par la page via le gestionnaire de pages.

Le gestionnaire de page ASP.NET n'est qu'un type de gestionnaire. ASP.NET est fourni avec plusieurs autres gestionnaires intégrés, tels que le gestionnaire de service Web pour .asmx files.

Vous pouvez créer des gestionnaires HTTP personnalisés lorsque vous souhaitez une gestion spéciale que vous pouvez identifier à l'aide d'extensions de nom de fichier dans votre application. Par exemple, les scénarios suivants constitueraient une bonne utilisation des gestionnaires HTTP personnalisés:

Flux RSS Pour créer un flux RSS pour un site, vous pouvez créer un gestionnaire qui émet du XML au format RSS. Vous pouvez ensuite lier l'extension .rss (par exemple) de votre application au gestionnaire personnalisé. Lorsque les utilisateurs envoient une demande à votre site qui se termine par .rss, ASP.NET appelle votre gestionnaire pour traiter la demande.

Serveur d'images Si vous voulez que votre application Web serve des images de différentes tailles, vous pouvez écrire un gestionnaire personnalisé pour redimensionner les images, puis les renvoyer à l'utilisateur en tant que réponse du gestionnaire.

Les gestionnaires HTTP ont accès au contexte de l'application, y compris l'identité de l'utilisateur demandeur (s'il est connu), l'état de l'application et les informations de la session. Lorsqu'un gestionnaire HTTP est demandé, ASP.NET appelle la méthode ProcessRequest sur le gestionnaire approprié. La méthode ProcessRequest du gestionnaire crée une réponse qui est renvoyée au navigateur demandeur. Comme pour toute demande de page, la réponse passe par tous les modules HTTP ayant souscrit aux événements survenant après l'exécution du gestionnaire.

0

Toute classe qui implémente System.Web.IHttpHandler Interface devient HttpHandler. Et cette classe s'exécute en tant que processus en réponse à une demande adressée au site ASP.NET.

Le gestionnaire le plus courant est un gestionnaire de page ASP.NET qui traite les fichiers .aspx. Lorsque les utilisateurs demandent un fichier .aspx, la demande est traitée par la page via le gestionnaire de pages (la classe qui implémente l'interface System.Web.IHttpHandler).

Vous pouvez créer vos propres gestionnaires HTTP personnalisés qui rendent la sortie personnalisée au navigateur.

Certains gestionnaires par défaut ASP.NET sont les suivants: 

  1. Page Handler (.aspx) - Gère les pages Web
  2. User Control Handler (.ascx) - Gère les pages de contrôle de l'utilisateur Web
  3. Gestionnaire de service Web (.asmx) - Gère les pages de service Web
  4. Gestionnaire de trace (trace.axd) - Gère la fonctionnalité de trace
0
Rajeev Singh

Un gestionnaire HTTP ASP.NET est le processus (souvent appelé "noeud final") qui s'exécute en réponse à une demande adressée à une application Web ASP.NET. Le gestionnaire le plus courant est un gestionnaire de page ASP.NET qui traite les fichiers .aspx. Lorsque les utilisateurs demandent un fichier .aspx, la demande est traitée par la page via le gestionnaire de pages. Vous pouvez créer vos propres gestionnaires HTTP qui rendent une sortie personnalisée au navigateur.

0
Budhimanta