线程如何通过Http.sys、IIS和ASP.NET绑定到请求
我现在读了很多关于node.js的文章。在使用传统的每请求线程模型(Apache)的服务器和使用事件循环(Nginx、node、Tornado)的服务器之间经常进行比较 我想详细了解如何在ASP.NET中处理请求—从在http.sys中接收到请求到在ASP.NET中处理请求。我发现http.sys和IIS上的MSDN文档有点缺乏,但也许我的google fu现在很弱。到目前为止,我找到的最好的资源是一篇文章 有没有人能给我提供更多关于这个话题的信息,或者给我指一下其他的资源线程如何通过Http.sys、IIS和ASP.NET绑定到请求,asp.net,multithreading,iis,http.sys,Asp.net,Multithreading,Iis,Http.sys,我现在读了很多关于node.js的文章。在使用传统的每请求线程模型(Apache)的服务器和使用事件循环(Nginx、node、Tornado)的服务器之间经常进行比较 我想详细了解如何在ASP.NET中处理请求—从在http.sys中接收到请求到在ASP.NET中处理请求。我发现http.sys和IIS上的MSDN文档有点缺乏,但也许我的google fu现在很弱。到目前为止,我找到的最好的资源是一篇文章 有没有人能给我提供更多关于这个话题的信息,或者给我指一下其他的资源 (就这个问题而言,我
(就这个问题而言,我只对具有典型集成管道的IIS7感兴趣)根据我到目前为止的研究,我的理解是,当请求进入时,它会被放入内核模式请求队列。根据,这避免了在存在大量请求(或进程或线程…)时上下文切换的许多问题,为事件IO提供了类似的好处。 引自文章: “每个请求队列对应一个 应用程序池 对应于一个请求队列 在HTTP.sys和一个或多个worker中 过程。” 因此,根据这一点,每个请求队列可能有多个“.”(谷歌缓存) 据我了解:
- IIS打开创建一个请求队列 (请参阅下面的http.sys api)
- 在IIS中配置的“网站”对应于一个工作进程
- 网站/工作进程处理线程池
- 线程从请求队列中获得一个请求
- 如果IIS使用HTTP.SYS,它会如何更改服务器头?()
注意:我不确定“内核模式请求队列”是否/如何对应于,我假设每个请求都有自己的请求,但我不知道,所以我真的希望有人能更彻底地回答这个问题。我刚刚偶然发现,http.sys似乎确实使用了IO完成端口,这应该提供几乎与evented IO(node.js、nginx、lighttpd、C10K等)相同的好处 我的Google fu出现了,可能会回答你的问题。这是一个很好的问题,我自己也很想知道。谢谢你提供这么多信息。我暂时没有回答这个问题,以防其他人愿意提供帮助。我也在IIS论坛上发布了这篇文章,试图鼓励那些人参加狂欢。