Question

Je lis actuellement beaucoup sur Node.js. Il y a une comparaison fréquente entre les serveurs au moyen d'un fil traditionnel par modèle de demande (Apache) et les serveurs qui utilisent une boucle d'événements (Nginx, noeud, Tornado).

Je voudrais savoir en détail sur la façon dont une demande est traitée dans ASP.NET - à partir du point où il est reçu dans http.sys tout le chemin jusqu'à étant traité dans ASP.NET lui-même. J'ai trouvé la documentation MSDN sur http.sys et IIS manque un peu, mais peut-être mon google-fu est faible aujourd'hui. Jusqu'à présent, la meilleure que j'ai trouvé est un post sur Blog de Thomas Marquardt.

Quelqu'un pourrait-il faire la lumière sur le sujet, ou me pointer vers d'autres ressources?

(Aux fins de cette question, je suis seulement intéressé IIS7 avec un pipeline intégré typique)

Était-ce utile?

La solution

D'après mes recherches à ce jour, je crois comprendre que sa lorsqu'une demande arrive il est mis dans une file d'attente de demande en mode noyau. Selon cette , cela évite de nombreux problèmes avec le changement de contexte quand il y a des quantités massives de demandes (ou processus ou threads ...), offrant des avantages similaires à evented IO. Cité de l'article:

«chaque file d'attente de requête correspond à une pool d'applications. Un pool d'applications correspond à une file d'attente de demande au sein HTTP.sys et un ou plusieurs travailleurs processus ».

Ainsi, selon que, chaque file d'attente de demande peut avoir plus d'un « processus de travail ." (Cache Google) En savoir plus sur les processus de travail

De ma compréhension:

  • IIS crée une file d'attente Opens de demande (Voir le http.sys api ci-dessous)
  • A "site Web" configuré dans IIS correspond à une processus de travail
  • Un processus site / travailleur Web actions le pool de threads.
  • Un fil est remis à une demande de la file d'attente de requête.

Voici un grand nombre d'informations sur le l'architecture de IIS7

Voici quelques informations supplémentaires sur http. sys .

i ont encore questions ouvertes:

  • Comment diable fait IIS changer l'en-tête du serveur si elle utilise HTTP.SYS? ( Voir cette question )

Note: Je ne sais pas si / comment une file d'attente "à la demande en mode noyau" correspond à un IO ports d'achèvement , je suppose que chaque demande aurait son propre, mais je ne sais pas, je l'espère vraiment que quelqu'un répondra à cette manière plus approfondie. Je viens de tombé sur cette question et il semble que http.sys offre en effet utilisation IO ports d'achèvement, ce qui devrait fournir presque tous les mêmes benifits que evented IO (Node.js, nginx, lighttpd, C10K, etc ...) ont.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top