2011-01-29 9 views
20

Actualmente estoy leyendo mucho sobre node.js. Hay una comparación frecuente entre servidores que usan un hilo tradicional por modelo de solicitud (Apache) y servidores que usan un bucle de evento (Nginx, nodo, Tornado).¿Cómo se vinculan los hilos a las solicitudes a través de Http.sys, IIS y ASP.NET?

Me gustaría conocer en detalle cómo se procesa una solicitud en ASP.NET, desde el punto en que se recibe en http.sys hasta que se procesa en ASP.NET. Encontré la documentación de MSDN en http.sys e IIS un poco ausente, pero tal vez mi google-fu es débil hoy. Hasta ahora, el mejor recurso que he encontrado es una publicación en Thomas Marquardt's Blog.

¿Alguien podría arrojar más luz sobre el tema, o señalarme a otros recursos?

(Para los fines de esta pregunta sólo me interesa en IIS7 con una tubería típica integrada)

+2

Mi Google-fu aparece http://www.west-wind.com/presentations/howaspnetworks/howaspnetworks.asp que podría responder a su pregunta –

+0

Esta es una gran pregunta, y algo que me he preguntado a mí mismo. – Jake

Respuesta

7

De mi investigación hasta el momento, es mi entendimiento de que cuando llega una petición que consigue puesto en un kernel cola de solicitud de modo. De acuerdo con this, esto evita muchos de los problemas con el cambio de contexto cuando hay cantidades masivas de solicitudes (o procesos o hilos ...), que proporcionan beneficios similares a IO con evented. Citado del artículo:

"Cada cola de solicitudes corresponde a un grupo de aplicaciones Un grupo de aplicaciones corresponde a una cola de solicitudes dentro HTTP.sys y uno o más procesos de trabajo ."

De acuerdo con eso, cada cola de solicitudes puede tener más de un "Worker Process". (Caché de Google) More on worker processes

Desde mi entendimiento:

  • abre IIS crea una cola de solicitudes (véase la API http.sys abajo)
  • "Sitio Web"
  • Una configurado en IIS corresponde a un trabajador Proceso
  • Un sitio web/Proceso de trabajo shares el grupo de subprocesos.
  • Un hilo recibe una solicitud de la cola de solicitudes.

Aquí está una gran cantidad de información acerca IIS7's architecture

Aquí hay más información sobre http.sys.

Preguntas abiertas todavía tengo:

  • ¿Cómo diablos ¿Cambia la cabecera del servidor IIS del si utiliza HTTP.SYS?(See this question)

Nota: No estoy seguro de si/cómo una "cola de solicitudes de modo de núcleo" corresponde a un IO completion port, yo supongo que cada solicitud tendría su propio pero no sé , entonces realmente espero que alguien responda esto más a fondo. Acabo de tropezar con this question y parece que http.sys de hecho utiliza puertos IO Completion, que deberían proporcionar casi todos los mismos beneficios que IO (node.js, nginx, lighttpd, C10K, etc ...) tienen.

+0

Gracias por proporcionar tanta más información. De momento, dejé la pregunta abierta por si alguien más quisiera contribuir. También publiqué esto en el foro de IIS para tratar de alentar a esa gente a tomar un golpe. –

Cuestiones relacionadas