Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 20191|Répondre: 0

[ASP.NET] Asp.Net IHttpHandler introduit

[Copié le lien]
Publié sur 13/03/2018 21:40:17 | | | |
Asp.Net IHttpHandler introduit
ASP.NET deux interfaces de traitement couramment utilisées pour répondre aux requêtes Http sont IHttpHandler et IHttpModule.

En général, IHttpHandler est utilisé pour traiter un type spécifique de requête, comme le traitement séparé de chaque fichier *.asp, *.aspx. IHttpModule est généralement utilisé pour gérer des opérations couramment requises pour la requête, comme effectuer certaines des mêmes vérifications sur la page de requête.

Examinons les étapes de traitement du serveur IIS lors de la requête HTTP correspondante. ASP.NET a le concept de pipeline, ce qui signifie que chaque requête ASP.NET comportera une série d’opérations correspondantes dans IIS pour former une séquence de type ligne.

ASP.NET introduction du pipeline

Jetons un œil au schéma de temps de traitement du pipeline :




Comme on peut le voir sur la figure, après l’arrivée de la requête, l’implémentation est traitée par HttpModule puis la méthode ProcessRequest() de HttpHandler est appelée pour fournir la réponse spécifique. Il n’est donc pas difficile de comprendre pourquoi la gestion des requêtes spécifiques à une classe est placée dans la classe HttpHandler lors de certaines vérifications communes à toutes les requêtes dans le HttpModule.

Pratique du code
IHttpHandler

L’auteur a récemment découvert l’utilisation d’IHttpHandler pour gérer les appels d’interface client dans le projet, alors discutons brièvement de la conception simple de l’interface basée sur IHttpHandler.

L’interface IHttpHandler ne comporte que deux membres :


L’attribut IsReusable indique si l’objet HttpHandler peut être utilisé par d’autres instances, et nous le mettons généralement sur True. La méthode ProcessRequest() est une réponse spécifique à la requête, et il suffit d’indiquer ici l’opération de logique métier spécifique.

Tout d’abord, créez un nouveau projet web et ajoutez une classe Handler :

La classe RayHandler implémente la fonction ProcessRequest() de l’interface IHttpHandler, qui n’est qu’une sortie directe d’un texte.

Ensuite, il faut ajouter la configuration suivante dans le fichier Web.config :


path indique la correspondance d’URL, comme *.ray, ce qui signifie que le gestionnaire répondra aux requêtes URL se terminant par « .ray », verbe indique la méthode de requête, comme Get/Post, et * signifie qu’il correspond à toutes. type indique le type de classe Handler, WebApplication2.RayHandler est le nom de la classe, WebApplication2 fait référence au nom de l’assembleur dans le répertoire Bin, par exemple, le nom d’assemblage dans l’exemple est WebApplication2.dll, et il n’est pas nécessaire de définir un nom de suffixe ici.

Démarrez le site, entrez l’URL se terminant par « .ray », et vous pouvez voir le résultat suivant :



Aperçu de l’usine IHttpHandlerFactory

Parfois, nous devons traiter avec plusieurs suffixes différents, dont un correspondant à une classe Handler, et voici à quoi ressemble notre fichier Web.config :


Si nous avons beaucoup de classes d’implémentation HttpHandler, alors notre configuration de fichiers Web.config risque d’être très verbeuse. Ou dans certains cas, lorsque nous ne pouvons déterminer quel Handler répond que lorsque le programme est en cours d’exécution, nous devons utiliser IHttpHandlerFactory.

IHttpHandlerFactory est défini comme suit :


Parmi eux :

GetHandler() : Retourne une instance qui implémente l’interface IHttpHandler ;
ReleaseHandler() : Permet à Factory de réutiliser une instance Handler existante.
Prenons les requêtes ray et rss ci-dessus comme exemple, implémentons la classe Factory :

Dans ce cas, la configuration dans Web.config est la suivante :


À ce stade, la fonction d’utiliser la classe Factory pour correspondre à différents gestionnaires spécifiques est implémentée, simplifiant ainsi la configuration.

Scalable IHttpHandlerFactory

Dans l’implémentation ci-dessus, si le programme doit ajouter une nouvelle méthode de gestion du suffixe à l’avenir, il doit modifier l’instruction Switch dans GetHandler(), ce qui peut également entraîner des erreurs ou d’autres risques de sécurité. Alors, est-il possible de garder la classe HandlerFactory inchangée pour les extensions ultérieures ?

La réponse est définitivement oui. Les lecteurs familiers du modèle de conception doivent comprendre qu’il s’agit d’un simple motif d’usine, et pour atteindre les fonctions précédentes, nous pouvons utiliser le mode de conception appelé points avancés.

Et ici, nous pouvons aussi utiliser la caractéristique du langage C# - la réflexion. Grâce au mécanisme de réflexion de C#, nous reflétons le type de Hanlder correspondant selon le suffixe de l’URL, tant que nous sommes d’accord sur la correspondance entre le nom du suffixe de l’URL et le nom de la classe du Handler.

Par exemple, nous réécrivons GetHandler() comme suit :

Dans ce cas, il suffit de placer la classe Handler dans la méthode sous le même espace de noms que la classe HandlerFactory et de la configurer correctement dans Web.config. Par exemple, s’il existe une classe RayHandler, la configuration suivante doit être ajoutée pour correspondre automatiquement :



résumé
Cet article présente brièvement l’utilisation d’IHttpHandler dans ASP.NET, fournit l’implémentation d’IHttpHandlerFactory dans le traitement de multiples requêtes Handler, et enfin, améliore une implémentation évolutive multi-requêtes en utilisant le mécanisme de réflexion de C#.





Précédent:asp.net Signification explicative d’HttpContext
Prochain:asp.net interface IHttpModule est expliquée en détail
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com