Je nachdem, was Sie tun, würde ich nicht erwarten, eine Menge Verbesserung gegenüber nur mit einem HttpHandler zu sehen. Ich würde damit beginnen, einfach den HttpHandler zu schreiben und zu sehen, wie er funktioniert. Wenn Sie es schneller benötigen, sollten Sie sich genauer ansehen, was Sie tatsächlich tun, während Sie die Anfrage bearbeiten und sehen, was optimiert werden kann. Wenn Sie beispielsweise eine Protokollierung in einer Datenbank durchführen, sollten Sie versuchen, in eine lokale Datenbank statt in ein Netzwerk zu schreiben. Wenn es immer noch nicht schnell genug ist, dann schau vielleicht in etwas niedrigeres Level. Bis zu diesem Punkt würde ich bei dem bleiben, was am einfachsten für dich ist.
Als Referenz habe ich einen Ad Server in ASP.NET (mit HttpHandlers) geschrieben, der eine Anzeige (einschließlich Targeting und Protokollierung der Impression in einer lokalen Datenbank) in 0-15ms unter Last liefern kann. Ich dachte, ich würde ziemlich viel verarbeiten - aber das ist eine ziemlich gute Reaktionszeit IMHO.
Update nach mehreren Monaten:
Wenn Sie alle die Httpmodules, die standardmäßig enthalten sind, wird dies eine angemessene Menge an Overhead zu entfernen. Standardmäßig werden die folgenden Httpmodules in jedem Ort über das Computerebene web.config-Datei enthalten:
- Output
- Session (für den Sitzungszustand)
- WindowsAuthentication
- FormsAuthentication
- PassportAuthentication
- RoleManager
- UrlAuthorization
- FileAuthorization
- anonymousIdentification
- Profil
- Fehlerbehandler
- Servicemodel
Wie ich schon oben gesagt, mein Ad-Server nicht von diesen nicht verwendet, also habe ich nur das in dieser App getan Netz.config:
<httpModules>
<clear />
</httpModules>
Wenn Sie einige von denen brauchen, aber nicht alle, Sie diejenigen, entfernen Sie nicht brauchen:
<httpModules>
<remove name="PassportAuthentication" />
<remove name="Session" />
</httpModules>
ASP.NET MVC Hinweis: ASP.NET MVC erfordert das Session-State-Modul, es sei denn, Sie tun etwas, um es zu umgehen. Siehe diese Frage für weitere Informationen: How can I disable session state in ASP.NET MVC?
Update für IIS7: Leider sind die Dinge in IIS7 nicht ganz so einfach. Hier ist how to clear HTTP Modules in IIS7
Sie sind tot: Ich werde einige Protokollierung in einer Datenbank durchführen. Und ich plante, winzige Textdateien zu erstellen, anstatt zur db zu gehen. Die Dateien würden später verarbeitet werden. Aber basierend auf Ihrer Erfahrung und der beeindruckenden Reaktionszeit, die Sie erreicht haben, werde ich einfach mit einem einfachen HttpHandler- und DB-Zugriff fortfahren. –
Wir haben eine SQL Express-Instanz auf die Web-Server geschrieben, in die geschrieben wird, und dann gibt es einen Job, der alle Daten von den Webserver-Instanzen in unseren SQL-Hauptserver zieht. –
Super, danke für das Update. Sehr hilfreich. –