IHttpHandler vs IHttpModule
Ma question est simple (même si la réponse ne sera probablement pas): je suis en train de décider comment mettre en œuvre un serveur side télécharger gestionnaire en C# /ASP.NET.
J'ai utilisé à la fois HttpModules (IHttpModule interface) et HttpHandlers (interface IHttpHandler) et il me semble que je pourrais mettre en œuvre ce soit en utilisant le mécanisme. Il se produit également pour moi que je ne comprends pas les différences entre les deux.
Donc ma question est: est-ce Dans quels cas choisir le IHttpHandler au lieu de IHttpModule (et vice/versa)?
Est exécuté beaucoup plus élevé dans le pipeline? Est beaucoup plus facile à configurer que dans certaines situations? Ne peut-on pas bien travailler avec des moyennes de sécurité?
- Sérieusement LOL ed à " Il se produit également pour moi que je ne comprends pas les différences entre les deux.' Bonne question, mais elle mérite un +1 que pour ça 🙂
- 🙂 Merci. Je trouve que c'est bien d'être honnête au sujet de choses que je ne sais pas.
- Sans poser de questions, il n'y aurait pas de réponses.. 🙂
Vous devez vous connecter pour publier un commentaire.
Un ASP.NET gestionnaire HTTP est le processus (souvent appelé le "point final") qui s'exécute en réponse à une demande faite à un ASP.NET application Web. La plus courante est un gestionnaire d'ASP.NET page gestionnaire de processus .fichiers aspx. Lorsque les utilisateurs demandent une .fichier aspx, la demande est traitée par la page par le biais de la page gestionnaire. Vous pouvez créer vos propres gestionnaires HTTP rendu de sortie personnalisé pour le navigateur.
Typique utilise pour HTTP personnalisé gestionnaires sont les suivants:
Un module HTTP est une assemblée qui est appelé à chaque demande qui est faite à votre demande. HTTP modules sont appelés dans le cadre de la ASP.NET pipeline de demande et d'avoir accès à du cycle de vie des événements tout au long de la demande. HTTP modules vous permettent d'examiner les demandes entrantes et sortantes et de prendre des mesures en fonction de la demande.
Typique utilise pour HTTP modules sont les suivants:
À partir de: http://msdn.microsoft.com/en-us/library/bb398986.aspx
Comme indiqué ici, HttpModules sont de simples classes qui peuvent se brancher dans le pipeline de traitement de demande, alors que HttpHandlers diffèrent de HttpModules non seulement en raison de leurs positions dans le pipeline de traitement de demande, mais aussi parce qu'ils doivent être mappées à une des extensions de fichiers spécifiques.
IHttpModule
vous donne beaucoup plus de contrôle, vous pouvez en principe le contrôle tous du trafic dirigé vers votre application Web.IHttpHandler
vous donne moins de contrôle (le trafic est filtré avant il atteint votre gestionnaire), mais si c'est suffisant pour vos besoins, alors je ne vois pas de raison d'utiliser leIHttpModule
.De toute façon, il est probablement mieux d'avoir votre logique personnalisée dans une catégorie distincte, et alors il suffit d'utiliser cette classe soit
IHttpModule
ouIHttpHandler
. De cette façon, vous n'avez pas vraiment à vous soucier de choisir l'une ou l'autre. En fait, vous pouvez créer une classe supplémentaire qui met en œuvre les deuxIHttpHandler
etIHttpModule
et de décider ensuite que l'utilisation par la mise enWeb.config
.Modules sont destinés à gérer les événements déclenchés par l'application avant et après la demande est traitée par le gestionnaire. Les gestionnaires, d'autre part, ne bénéficient pas de la possibilité de souscrire à des événements d'application et, au lieu de cela, tout simplement obtenir leurs méthode ProcessRequest invoqué, afin de la "principale" travaux de traitement d'une demande spécifique.
Prendre un coup d'oeil à cette documentation de Microsoft (environ à mi-chemin en bas de la page dans le "La demande est traitée par le HttpApplication pipeline" de la section):
http://msdn.microsoft.com/en-us/library/bb470252.aspx
Vous pouvez le voir dans l'étape 15, où le gestionnaire obtient sa chance à exécuter. Tous les événements avant et après cette étape sont disponibles pour l'interception par des modules, mais pas des gestionnaires.
Selon quelles fonctionnalités spécifiques que vous voulez réaliser, vous pouvez utiliser un gestionnaire ou un module pour mettre en œuvre un gestionnaire de téléchargement. Vous pourriez même finir en utilisant à la fois.
Quelque chose à prendre en considération peuvent utiliser un gestionnaire de téléchargement qui est déjà écrit.
Voici un logiciel gratuit et open source:
http://www.brettle.com/neatupload
Voici un commercial:
http://krystalware.com/Products/SlickUpload/
Si vous regardez la documentation de NeatUpload, vous verrez qu'il vous oblige à configurer un module.
15 secondes a un joli petit tutoriel donner un exemple pratique