2009-02-21 16 views
6

Ho creato un'app Web in cui sto utilizzando un modulo che reindirizza senza URL "www" (http://example.com/) con gli URL "www" (http://www.example.com/). Ma visto che sono su un server di hosting condiviso, dove non ho il permesso di implementare un HttpModule, ho provato lo stesso codice di modulo con il file Global.asax. Che funzioni!Qual è la differenza di prestazioni tra HttpModule e Global.aspx?

Ho utilizzato il seguente evento (Application_BeginRequest()) per implementare la mia funzionalità HttpModule.

void Application_BeginRequest() 
{ 
    //module code 
} 

Il modulo e l'applicazione funziona bene e correttamente dal file Global.asax Ma io sono preoccupato per le prestazioni.

Perché utilizziamo i moduli HTTP in asp.net Se possiamo implementare lo stesso utilizzando il file Global.asax. C'è differenza di prestazioni tra entrambi. O qualsiasi differenza su cui devo preoccuparmi quando utilizzo il file Global.asax invece di HttpModule ??

Si prega di spiegare!

risposta

4

Global.asax eredita da HTTPApplication e HTTPModules deve implementare IHTTPInterface.
Il metodo HTTPModules Init ottiene l'oggetto HTTPApplication passato.
Nel metodo Init è possibile collegare gli eventi di HTTPApplication.

Si consiglia di utilizzare HTTPModules ovunque sia possibile.
Specialmente se si esegue un software con involucro termoretraibile dove il cliente può sostituire il proprio global.asax con il proprio.

+0

Anche io preferisco i moduli HTTP su Global.asax ma sul mio server di hosting condiviso quando sto cercando di implementare HttpModule, quindi mi dà "500 Errore interno del server". Ecco perché vado con Global.asax – Prashant

+0

Un'altra cosa, non riesco a ottenere "Soprattutto se produci software termoretraibile dove il cliente può sostituire il tuo global.asax con il proprio." questa linea delle tue risposte? Che cos'è un "software con involucro termoretraibile" e in che modo il cliente può sostituire il file global.asax? – Prashant

+0

In fase di esecuzione, Global.asax viene analizzato e compilato in una classe .NET Framework generata dinamicamente derivata dalla classe base HttpApplication. Se vendi un pacchetto software (termoretraibile), il cliente può modificare global.asax –

2

Non c'è praticamente alcuna differenza. Il punto di HTTPModules è per chiarezza e separazione. Spesso le persone indirizzano la richiesta attraverso diversi HTTPModules, cosa che non si può ottenere con global.asax.

+1

Ok, questo significa che entrambi i metodi non hanno alcuna differenza in termini di prestazioni. Caz che conta per me :) – Prashant

Problemi correlati