2011-01-29 13 views
20

Attualmente sto leggendo molto su node.js. Esiste un frequente confronto tra i server che utilizzano un modello di thread tradizionale per richiesta (Apache) e server che utilizzano un ciclo di eventi (Nginx, node, Tornado).In che modo i thread sono legati alle richieste tramite Http.sys, IIS e ASP.NET

Vorrei sapere in dettaglio come viene elaborata una richiesta in ASP.NET - dal momento in cui viene ricevuta in http.sys fino a quando non viene elaborata in ASP.NET stesso. Ho trovato la documentazione MSDN su http.sys e IIS un po 'carente, ma forse il mio google-fu è debole oggi. Finora, la migliore risorsa che ho trovato è un post su Thomas Marquardt's Blog.

Qualcuno potrebbe gettare più luce sull'argomento o indicarmi altre risorse?

(Ai fini di questa domanda che mi sono interessato solo in IIS7 con una tipica gasdotto integrato)

+2

mio Google-fu salta fuori http://www.west-wind.com/presentations/howaspnetworks/howaspnetworks.asp che potrebbero rispondere alla tua domanda –

+0

Questa è una grande domanda, e qualcosa mi si sono chiesti. – Jake

risposta

7

Dalla mia ricerca finora, la sua la mia comprensione che quando arriva una richiesta che viene messo in un kernel- coda di richiesta della modalità. Secondo this, questo evita molti dei problemi con il cambio di contesto quando ci sono enormi quantità di richieste (o processi o thread ...), fornendo vantaggi simili all'IO event. Citato da l'articolo:

"Ogni coda di richieste corrisponde ad un pool di applicazioni Un pool di applicazioni corrisponde ad una richiesta di coda di entro HTTP.sys e uno o più processi di lavoro ."

Quindi, in base a ciò, ogni coda di richieste può avere più di uno "Worker Process". (Cache di Google) More on worker processes

Dalla mia comprensione:

  • IIS apre crea una coda di richieste (vedere la http.sys api sotto)
  • A "Sito Web" configurato in IIS corrisponde a un operaio Processo
  • Un processo di sito Web/processo di lavoro shares il pool di thread.
  • Un thread riceve una richiesta dalla coda di richiesta.

Ecco un sacco di grandi informazioni su IIS7's architecture

Ecco qualche informazione in più http.sys.

Domande aperte Ho ancora:

  • Come diavolo fa IIS modificare l'intestazione Server se utilizza HTTP.SYS?(See this question)

Nota: io non sono sicuro se/come una "coda di richieste in modalità kernel" corrisponde ad un IO completion port, presumo che ogni richiesta avrebbe la propria, ma non so , quindi spero davvero che qualcuno risponda in modo più approfondito. Ho appena inciampato su this question e sembra che http.sys in effetti utilizzi porte di completamento dell'IO, che dovrebbero fornire quasi tutti gli stessi vantaggi che hanno gli IO eventici (node.js, nginx, lighttpd, C10K, ecc ...).

+0

Grazie per avermi fornito molte più informazioni. Ho lasciato la domanda aperta per il momento nel caso in cui qualcun altro volesse contribuire. Ho anche postato questo sul forum IIS per cercare di incoraggiare quelle persone a prendere una bash. –

Problemi correlati