2009-08-16 16 views

risposta

6

è possibile utilizzare httpmodules per l'autenticazione, il controllo o la riscrittura dell'URL. Poiché ogni richiesta passa per la prima volta attraverso tutti i moduli, prima che venga gestita da httphandler, questo è il posto dove applicare il codice che si desidera eseguire prima del codice dell'applicazione specifico.

Si utilizzerà un httphandler se non si desidera fare affidamento sul motore asp.net. per esempio potresti scrivere il tuo meccanismo di rendering basato su AJAX, XML e XSLT che non si affida alle tradizionali pagine asp.net.

3

HttpModules e HttpHandlers sono utili quando si desidera modificare la gestione predefinita dei documenti da IIS cambiando completamente il comportamento o aggiungendo l'elaborazione pre o post al documento.

Un'applicazione pratica che ho avuto per un HttpModule è per la creazione dinamica di miniature. Ho scritto un HttpModule che gestiva tutte le richieste di immagini. Se la richiesta contenesse la stringa di query "? Thumb", avrei generato dinamicamente una miniatura invece di servire l'immagine originale.

Ho anche visto HttpModules utilizzato per rimuovere commenti e spazi bianchi dall'output di pagine aspx e dalla riscrittura dell'URL.

4

Ti sei trovato a scrivere codice in un evento Page_Load di ASPX per emettere qualcosa nella risposta e quindi chiamare Response.End? Probabilmente è stato scritto meglio come HttpHandler (ashx).

+0

+1 sì ho fatto da pochi giorni fa :) –

2

HttpHandlers è ideale per le richieste di reinstradamento di determinati tipi di file e altre risorse. Ad esempio, quando devi fare qualcosa con una richiesta in arrivo per un tipo di file che ASP.NET non protegge tramite FormsAuthentication, puoi effettivamente determinare se si tratta di un particolare tipo di file, situato in una directory specifica e reindirizzare l'utente a un'altra pagina se non autorizzata.

HttpModules può eseguire un'elaborazione specifica per l'app in modo indipendente dalle risorse. Una spiegazione più tecnica può essere trovata qui: http://www.15seconds.com/issue/020417.htm

Inoltre, aggiungono un sovraccarico a ciascuna richiesta, il che significa che non si devono usare per le attività ad alta intensità di processo.

2

Entrambi i gestori e i moduli possono essere realmente compresi solo nel contesto del modello di pipeline ASP.NET e di come un gestore/modulo personalizzato creato si adatti a tale modello.

Coppia di buone risorse here e here.

Come altri hanno detto moduli possono essere utilizzati per creare il comportamento in certi punti evento (un altro uso comune è la gestione delle eccezioni globale), gestori creano movimentazione richiesta endpoint (non è solo un nome intelligente) dove un aspide. l'istanza della pagina Web (che in definitiva è comunque solo un gestore pesantemente compresso) sarebbe inutilmente pesante o completamente sbagliata. Personalmente uso ogni volta che creo qualcosa che non emette HTML, che diventa sempre più comune più si sviluppano applicazioni web rispetto ai siti web.

3

Citerò l'utilizzo, le persone hanno già dato delle buone definizioni.

gestori HTTP
Imaging si vuole rendere la mappa del sito di un sito web per la ricerca crawler del motore, piuttosto che spuntando il file finestra di salvataggio (salvare il file finestra di dialogo appare quando ASP.NET/IIS non hanno un gestore di default per il tipo di file richiesto, es. txt). Ho scritto un gestore HTTP per costruire al volo i file delle Sitemap (estraendo le informazioni sulla Sitemap dal DB).