Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
线程如何通过Http.sys、IIS和ASP.NET绑定到请求_Asp.net_Multithreading_Iis_Http.sys - Fatal编程技术网

线程如何通过Http.sys、IIS和ASP.NET绑定到请求

线程如何通过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现在很弱。到目前为止,我找到的最好的资源是一篇文章 有没有人能给我提供更多关于这个话题的信息,或者给我指一下其他的资源 (就这个问题而言,我

我现在读了很多关于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论坛上发布了这篇文章,试图鼓励那些人参加狂欢。