Qualcuno può spiegare in meno di 2 frasi la differenza tra entrambi? Sì, so che Google può fornire centinaia di risposte ma non una frase chiara su 2 :)
Qualcuno può spiegare in meno di 2 frasi la differenza tra entrambi? Sì, so che Google può fornire centinaia di risposte ma non una frase chiara su 2 :)
Risposte:
HttpHandler è la destinazione del treno di richiesta. HttpModule è una stazione lungo la strada.
Le due frasi:
Un HttpModule verrà eseguito per ogni richiesta alla tua applicazione, indipendentemente dall'estensione, e viene generalmente utilizzato per cose come sicurezza, statistiche, registrazione, ecc.
Un HttpHandler è generalmente associato a un'estensione specifica e viene utilizzato per cose come feed RSS, generazione o modifica dinamica di immagini e simili.
Qualche spiegazione in più se non è del tutto chiaro:
Il modo in cui ci penso: i moduli "si collegano" alla pipeline della richiesta, mentre i gestori "gestiscono" un'estensione di file specifica. Quindi, se hai un sito con un LoggingModule e un PdfHandler, entrambi verranno eseguiti per una richiesta a http://example.com/sample.pdf e il modulo di registrazione da solo verrà eseguito per una richiesta a http: // esempio.com/pagina.aspx .
C'è un articolo abbastanza chiaro sulla differenza tra MSDN: gestori HTTP e panoramica dei moduli HTTP
ProcessRequest
. D'altro canto, il modulo verrà eseguito in qualsiasi punto del ciclo di vita a cui lo si collega. Per il tuo scenario di voler eseguire qualcosa prima della pagina aspx, vuoi un modulo. Tuttavia, è necessario filtrare manualmente le richieste su pagine che non sono .aspx
L'obiettivo principale e comune di HttpHandler e HttpModule è quello di iniettare la logica di pre-elaborazione prima che la richiesta ASP.NET raggiunga il server IIS.
ASP.NET fornisce due modi per iniettare la logica nella pipeline della richiesta;
esempio: feed RSS: per creare un feed RSS per un sito Web, è possibile creare un gestore che emetta XML in formato RSS. Pertanto, quando gli utenti inviano una richiesta al tuo sito che termina con .rss, ASP.NET chiama il gestore per elaborare la richiesta.
La creazione del gestore 1. prevede tre passaggi. Implementare l'interfaccia IHttpHandler. 2. Registrare il gestore nel file web.config o machine.config. 3. Mappare l'estensione del file (* .arshad) su aspnet_isapi.dll in IIS.
L'interfaccia IHttpHandler ha il metodo ProcessRequest e la proprietà IsReusable che devono essere implementati. ProcessRequest: in questo metodo, si scrive il codice che produce l'output per il gestore. IsResuable: questa proprietà indica se questo gestore può essere riutilizzato o meno.
È possibile registrare il gestore nel file web.config in questo modo
<httpHandlers>
<add verb="*" path="*.arshad" type="namespace.classname, assemblyname" />
</httpHandlers>
Nota: qui stiamo gestendo qualsiasi nome di file con estensione arshad.
Il motore ASP.NET emette molti eventi quando passa la richiesta attraverso la pipeline della richiesta. Alcuni di questi eventi sono AuthenticateRequest, AuthorizeRequest, BeginRequest, EndRequest. Utilizzando HttpModule è possibile scrivere la logica in questi eventi. Questa logica viene eseguita quando si verificano gli eventi e prima che la richiesta raggiunga IIS.
La creazione dei moduli prevede due passaggi: 1. Implementazione dell'interfaccia IHttpModule 2. Registrazione del modulo nel file web.config o machine.config
esempio: Sicurezza: utilizzando il modulo HTTP, è possibile eseguire l'autenticazione personalizzata o altri controlli di sicurezza prima che la richiesta raggiunga IIS.
Il gestore HTTP è il processo che viene eseguito in risposta a una richiesta fatta a un'applicazione Web ASP.NET. I moduli HTTP consentono di esaminare le richieste in entrata e in uscita e di agire in base alla richiesta.
HttpHandler è responsabile della gestione della richiesta http per estensione mentre HttpModule risponde agli eventi del ciclo di vita dell'applicazione.
Bell'articolo a riguardo HttpModule-and-HttpHandlers
Riferimento: INFO: panoramica dei moduli HTTP e dei gestori HTTP ASP.NET
“I moduli vengono chiamati prima e dopo l'esecuzione del gestore. I moduli consentono agli sviluppatori di intercettare, partecipare o modificare ogni singola richiesta. I gestori vengono utilizzati per elaborare le richieste di singoli endpoint. I gestori consentono a ASP.NET Framework di elaborare singoli URL HTTP o gruppi di estensioni URL all'interno di un'applicazione. A differenza dei moduli, per elaborare una richiesta viene utilizzato un solo gestore ”.
Il gestore HTTP è il luogo in cui la compilazione viene effettivamente eseguita in base all'impostazione. ad esempio se l'estensione della pagina è .aspx, verrà compilata tramite system.web.Ui.Pagahandlefactory. una volta effettuata la compilazione su richiesta handle HTTP andrà attraverso il modulo HTTP e IIS.
Gestore HTTP
Il gestore HTTP è il processo che viene eseguito in risposta a una richiesta HTTP. Pertanto, ogni volta che l'utente richiede un file, questo viene elaborato dal gestore in base all'estensione. Pertanto, i gestori http personalizzati vengono creati quando è necessario un trattamento speciale basato sull'estensione del nome file. Consideriamo un esempio per creare RSS per un sito. Quindi, crea un gestore che generi XML in formato RSS. Ora associa l'estensione .rss al gestore personalizzato.
Moduli HTTP
I moduli HTTP sono collegati al ciclo di vita di una richiesta. Pertanto, quando una richiesta viene elaborata, viene passata attraverso tutti i moduli nella pipeline della richiesta. Quindi in genere i moduli http vengono utilizzati per:
Sicurezza: per autenticare una richiesta prima che la richiesta venga gestita.
Statistiche e registrazione: poiché i moduli sono chiamati per ogni richiesta, possono essere utilizzati per la raccolta di statistiche e per la registrazione delle informazioni.
Intestazione personalizzata: poiché la risposta può essere modificata, è possibile aggiungere informazioni di intestazione personalizzate alla risposta.