web-dev-qa-db-de.com

HTTP-Handler vs HTTP-Modul

Kann jemand in weniger als 2 Sätzen den Unterschied zwischen beiden erklären? Ja, ich weiß, dass Google Hunderte von Antworten liefern kann, aber keine in 2 klaren Sätzen :)

138
frenchie

HTTP-Handler ist, wo der Anforderungszug geleitet wird. HttpModule ist eine Station auf dem Weg.

297
muratgu

Die zwei Sätze:

Ein HttpModule wird für jede Anforderung an Ihre Anwendung ausgeführt, unabhängig von der Erweiterung, und wird im Allgemeinen für Dinge wie Sicherheit, Statistik, Protokollierung usw. verwendet.

Ein HTTP-Handler ist im Allgemeinen mit einer bestimmten Erweiterung verknüpft und wird für Dinge wie RSS-Feeds, dynamische Bilderzeugung oder -modifikation und dergleichen verwendet.

Ein bisschen mehr Erklärung, wenn das nicht ganz klar ist:

Die Art und Weise, wie ich sie betrachte - Module "stecken" in die Anforderungs-Pipeline, während Handler eine bestimmte Dateierweiterung "handhaben". Wenn Sie also eine Site mit einem LoggingModule und einem PdfHandler haben, werden beide ausgeführt, um eine Anfrage an http://example.com/sample.pdf zu senden, und nur das Logging-Modul wird ausgeführt für eine Anfrage an http://example.com/page.aspx .

Es gibt einen ziemlich klaren Artikel über den Unterschied bei MSDN: Übersicht über HTTP-Handler und HTTP-Module

197
Jon Galloway

Das vorrangige und gemeinsame Ziel von HttpHandler und HttpModule ist das Einfügen von Vorverarbeitungslogik, bevor die ASP.NET-Anforderung den IIS= Server erreicht.

ASP.NET bietet zwei Möglichkeiten zum Einfügen von Logik in die Anforderungspipeline.

  1. HTTP-Handler: Der HTTP-Handler hilft uns dabei, Vorverarbeitungslogik basierend auf der Erweiterung des angeforderten Dateinamens einzufügen. ASP.NET verwendet HTTP-Handler zum Implementieren vieler eigener Funktionen. ASP.NET verwendet beispielsweise Handler zum Verarbeiten von ASPX-, ASMX- und TRACE.AXD-Dateien.

beispiel: RSS-Feeds: Um einen RSS-Feed für eine Website zu erstellen, können Sie einen Handler erstellen, der RSS-formatiertes XML ausgibt. Wenn Benutzer also eine Anfrage an Ihre Site senden, die mit .rss endet, ruft ASP.NET Ihren Handler auf, um die Anfrage zu verarbeiten.

Das Erstellen von Handler 1 umfasst drei Schritte. Implementieren Sie die IHttpHandler-Schnittstelle. 2. Registrieren Sie den Handler in der Datei web.config oder machine.config. 3. Ordnen Sie die Dateierweiterung (* .arshad) aspnet_isapi.dll im IIS zu.

Die IHttpHandler-Schnittstelle verfügt über die ProcessRequest-Methode und die IsReusable-Eigenschaft, die implementiert werden müssen. ProcessRequest: In dieser Methode schreiben Sie den Code, der die Ausgabe für den Handler erzeugt. IsResuable: Diese Eigenschaft gibt an, ob dieser Handler wiederverwendet werden kann oder nicht.

Sie können den Handler wie folgt in der Datei web.config registrieren

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

Hinweis: Hier werden alle Dateinamen mit der Erweiterung arshad behandelt.

  1. HTTP-Module: HttpModule ist ein ereignisbasierter Prozessor, der Vorverarbeitungslogik einfügt, bevor die Anforderung den IIS Server erreicht. ASP.NET verwendet das HTTP-Modul, um zahlreiche eigene Funktionen wie Authentifizierung und Autorisierung zu implementieren. Session Management und Output Caching etc.

Das ASP.NET-Modul gibt viele Ereignisse aus, wenn die Anforderung die Anforderungspipeline durchläuft. Einige dieser Ereignisse sind AuthenticateRequest, AuthorizeRequest, BeginRequest, EndRequest. Mit HttpModule können Sie in diesen Ereignissen Logik schreiben. Diese Logik wird ausgeführt, wenn die Ereignisse ausgelöst werden und bevor die Anforderung IIS erreicht.

Das Erstellen von Modulen erfolgt in zwei Schritten: 1. Implementierung der IHttpModule-Schnittstelle 2. Registrierung des Moduls in der Datei web.config oder machine.config

beispiel: Sicherheit: Mit dem HTTP-Modul können Sie eine benutzerdefinierte Authentifizierung oder andere Sicherheitsüberprüfungen durchführen, bevor die Anforderung IIS erreicht.

20
Mohammed Arshad

HTTP-Handler ist der Prozess, der als Antwort auf eine Anforderung an eine ASP.NET-Webanwendung ausgeführt wird. Mit HTTP-Modulen können Sie eingehende und ausgehende Anforderungen untersuchen und basierend auf der Anforderung Maßnahmen ergreifen.

19
StephenLembert

HttpHandler ist für die Verarbeitung von HTTP-Anforderungen durch Erweiterung verantwortlich, während HttpModule auf Anwendungslebenszyklusereignisse reagiert.

5
marvelTracker

Schöner Artikel darüber HttpModule-and-HttpHandlers

Referenz: INFO: Übersicht über ASP.NET-HTTP-Module und HTTP-Handler

„Module werden vor und nach der Ausführung des Handlers aufgerufen. Mithilfe von Modulen können Entwickler jede einzelne Anforderung abfangen, daran teilnehmen oder ändern. Handler werden zum Verarbeiten einzelner Endpunktanforderungen verwendet. Mithilfe von Handlern kann das ASP.NET Framework einzelne HTTP-URLs oder Gruppen von URL-Erweiterungen in einer Anwendung verarbeiten. Im Gegensatz zu Modulen wird nur ein Handler zum Verarbeiten einer Anfrage verwendet.

2
smily

Der HTTP-Handler ist der Ort, an dem die Kompilierung basierend auf den Einstellungen durchgeführt wird. Wenn beispielsweise die Seitenerweiterung .aspx lautet, wird sie über system.web.Ui.Pagahandlefactory kompiliert. Sobald die Kompilierung bei einer HTTP-Handle-Anforderung abgeschlossen ist, werden das HTTP-Modul und IIS durchsucht.

1
Dadan Tiwari