ASP.NET和AJAX线程处理

3
参考此问题:ASP.NET是多线程的吗(它如何执行请求),以下解释是否正确: ASP.NET每个应用程序实例都有一个工作进程。它是多线程的,使用自己的应用程序池。大部分线程用于服务(用户)请求。每个请求(用户会话)是一个线程。相应的响应可能是另一个线程。用户请求来自ISAPI,它本身是多线程的。
AJAX不是多线程的。它使用与非AJAX网站相同的线程模型。页面请求(ajax或非ajax)可能会导致服务器使用多个线程,但客户端仍然是一个线程(浏览器使用单个线程)。
1个回答

3
简而言之,是的。在ASP.NET中,请求/响应通常在单个线程中处理...没有明确的“请求”和“响应”区分,它只是ISAPI将请求信息传递给ASP.NET处理程序,并执行适当的代码并编写输出。(尽管在ASP.NET负载下需要充分利用可用线程时,有一种将请求从一个线程迁移到另一个线程的机制。但我不完全确定在什么情况下或为什么会发生这种情况。)
浏览器端JavaScript和AJAX不是多线程的,但对于某些人来说,它可能看起来是这样,因为AJAX调用是异步的,响应是事件驱动的;也就是说,一旦请求被发送到服务器,JavaScript线程就不会被阻塞。它可以自由地向服务器发送更多的请求,响应可能会按照发送的顺序返回,也可能不会。但是,因为在核心中实际上只有一个线程,如果两个响应同时返回,一个响应将阻止另一个响应的执行,直到它完成。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接