IIS上的ASP.NET是否对每个请求使用线程? 减少线程数的好处

IIS上的ASP.NET是否对每个请求使用线程? 减少线程数的好处,asp.net,multithreading,iis,Asp.net,Multithreading,Iis,现在流行的做法是通过减少处理请求的线程数量来提高web服务器的可伸缩性,以防止不必要的上下文切换产生数十个或数百个线程。当等待“长轮询”(又称COMET)请求的某种应用程序事件时,这一点尤为重要——消耗整个线程的所有资源而对其不做任何处理简直是不礼貌的 Node.ns是一个极端的例子 Node.ns是减少线程数的一个非常极端的例子,它要求处理程序在等待任何事件(甚至是本地磁盘的I/O)时放弃处理所有HTTP请求的单个线程。这样,CPU核心就可以忙于做有用的计算工作,而不是“浪费”指令暂停和恢复许

现在流行的做法是通过减少处理请求的线程数量来提高web服务器的可伸缩性,以防止不必要的上下文切换产生数十个或数百个线程。当等待“长轮询”(又称COMET)请求的某种应用程序事件时,这一点尤为重要——消耗整个线程的所有资源而对其不做任何处理简直是不礼貌的

Node.ns是一个极端的例子 Node.ns是减少线程数的一个非常极端的例子,它要求处理程序在等待任何事件(甚至是本地磁盘的I/O)时放弃处理所有HTTP请求的单个线程。这样,CPU核心就可以忙于做有用的计算工作,而不是“浪费”指令暂停和恢复许多不同的线程

但是需要API支持 但是,在等待事件完成后安排恢复处理程序通常需要处理程序API中的显式支持。例如,JavaServlet规范中有一部分专门处理“异步”响应

为什么,ASP.NET? 那么,ASP.NET是否有类似的异步响应API(又名continuations,又名(有点松散的“反应器模式”)?是否有权威文档直接解决此问题及其与IIS的交互?ASP.NET/IIS使用什么术语来表示这些属性


我很快就要来到IIS/.NET了,如果我能帮忙的话,我不想写任何不必要的“每个请求线程”的代码。我会优先使用C。

我建议你搜索“异步ASP.NET”-你会找到很多阅读材料。@JonSkeet,是的,这些就是我要找的页面。@DavidBullock-我建议你阅读Jon Skeet的。:-)@DavidBullock我会支持这个建议——曼宁经常在圣诞节和新年前后提供电子书,所以你很可能会以一个好的价格买到它。然而,在ASP.NET的async/await上,有很多来自微软和第三方的非常好的资料,使用C#在线提供。