Frage

Ich lese gerade viel über node.js. Es gibt einen häufigen Vergleich zwischen Servern, die einen herkömmlichen Thread pro Anforderungsmodell (Apache) verwenden, und Server, die eine Ereignisschleife (Nginx, Knoten, Tornado) verwenden.

Ich möchte ausführlich darüber erfahren, wie eine Anfrage in ASP.NET bearbeitet wird - von dem Punkt, an dem sie in http.sys bis hin zu in ASP.NET selbst verarbeitet wird. Ich habe die MSDN-Dokumentation zu http.sys und IIs ein wenig fehlen, aber vielleicht ist mein Google-Fu heute schwach. Bisher ist die beste Ressource, die ich gefunden habe, ein Beitrag auf Thomas Marquardts Blog.

Könnte jemand mehr Licht auf das Thema werfen oder mich auf andere Ressourcen verweisen?

(Für die Zwecke dieser Frage interessiere ich mich nur für IIS7 mit einer typischen integrierten Pipeline)

War es hilfreich?

Lösung

Nach meiner bisherigen Forschung habe ich das Verständnis dafür, dass eine Anfrage in eine Kernel-Mode-Anfrage-Warteschlange gestellt wird. Entsprechend Dies, Dies vermeidet viele Probleme mit dem Kontextumschalten, wenn es massive Mengen an Anfragen (oder Prozessen oder Threads ...) gibt, was dem ereigneten IO ähnliche Vorteile bietet. Aus dem Artikel zitiert:

"Jede Anforderungswarteschlange entspricht einem Anwendungspool. Ein Anwendungspool entspricht einer Anforderungswarteschlange innerhalb von http.sys und einem oder mehreren Arbeitsprozessen."

Daher kann jede Anfrage -Warteschlange mehr als eine haben. "Arbeiterprozess. "(Google Cache) Mehr zu Arbeitsprozessen

Meinem Verständnis nach:

  • IIS öffnet eine Anforderungswarteschlange (siehe die API http.sys unten)
  • Eine in IIS konfigurierte "Website" entspricht einem Arbeitsprozess
  • Ein Website/einen Arbeiterprozess Anteile der Fadenpool.
  • Ein Thread erhält eine Anfrage aus der Anfrage -Warteschlange.

Hier sind viele tolle Informationen darüber IIS7's Architektur

Hier finden Sie einige weitere Informationen darüber http.sys.

Offene Fragen, die ich noch habe:

  • Wie zum Teufel ändert IIS den Serverheader, wenn es http.sys verwendet? (Siehe diese Frage)

Hinweis: Ich bin mir nicht sicher, ob/wie eine "Kernel-Mode-Anforderungswarteschlange" einem entspricht IO -Abschlussport, Ich würde annehmen, dass jede Anfrage ihre eigene haben würde, aber ich weiß es nicht, also hoffe ich wirklich, dass jemand dies gründlicher beantwortet. Ich bin gerade gestolpert diese Frage Und es scheint, dass Http.sys tatsächlich IO -Abschlussports verwendet, die fast alle die gleichen Benifits liefern sollten, die IO (Node.js, Nginx, LightTPD, C10K usw.) haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top