2009-02-21 5 views
6

Ich habe eine Web-App gemacht, wo ich ein Modul verwende, das ohne "www" URLs (http://example.com/) mit "www" URLs (http://www.example.com/) umleitet. Aber da ich auf dem Shared-Hosting-Server bin, wo ich keine Berechtigung habe, ein HttpModule zu implementieren, habe ich den gleichen Modul-Code mit der Global.asax-Datei ausprobiert. Das funktioniert!Was ist der Leistungsunterschied zwischen HttpModule und Global.aspx?

Ich habe das folgende Ereignis (Application_BeginRequest()) verwendet, um meine HttpModule-Funktionalität zu implementieren.

Das Modul und die Anwendung funktioniert gut und korrekt aus Global.asax-Datei Aber ich bin besorgt über die Leistung.

Warum wir die HTTPModule in asp.net verwenden Wenn wir das gleiche mit Global.asax-Datei implementieren können. Gibt es Leistungsunterschiede zwischen beiden? Oder irgendeinen Unterschied, über den ich mich sorgen muss, wenn ich Global.asax-Datei anstelle von HttpModule ??

Bitte erläutern!

Antwort

4

Global.asax erbt von HTTPApplication und HTTPModules müssen das IHTTPInterface implementieren.
Die HTTPModules-Init-Methode ruft das übergebene HTTPApplication-Objekt ab.
In der Init-Methode können Sie sich in die Ereignisse von HTTPApplication einklinken.

Ich würde empfehlen, HTTPModules zu verwenden, wo immer Sie können.
Besonders, wenn Sie in Schrumpffolie eingewickelte Software machen, wo der Kunde Ihr global.asax durch sein eigenes ersetzen kann.

+0

Ich bevorzuge auch die HTTPModule über Global.asax, aber auf meinem Shared-Hosting-Server, wenn ich versuche, HttpModule zu implementieren, gibt es mir dann "500 Insideral Server Error". Deshalb werde ich mit Global.asax gehen. – Prashant

+0

Noch eine Sache, die ich nicht bekomme "Vor allem, wenn Sie in Schrumpffolie verpackte Software machen, wo der Kunde Ihr global.asax durch ihr eigenes ersetzen kann." diese Zeile deiner Antworten? Was ist "eingeschweißte Software" und wie kann der Kunde die global.asax Datei ersetzen? – Prashant

+0

Zur Laufzeit wird Global.asax analysiert und in eine dynamisch generierte .NET Framework-Klasse kompiliert, die von der HttpApplication-Basisklasse abgeleitet ist. Wenn Sie ein Softwarepaket (in Schrumpffolie) verkaufen, kann der Kunde die Datei global.asax ändern. –

2

Es gibt so ziemlich keinen Unterschied. Der Punkt von HTTPModules ist für Klarheit und Trennung. Oft werden die Leute die Anfrage über mehrere HTTPModule leiten, was mit global.asax nicht möglich ist.

+1

Ok, das bedeutet, beide Methoden haben keinen Unterschied in Bezug auf die Leistung. Caz das ist wichtig für mich :) – Prashant