ASP.NET& AJAX线程

时间:2009-02-15 17:49:06

标签: asp.net ajax multithreading iis isapi

引用这个问题:Is ASP.NET multithreaded (how does it execute requests),这是对线程的正确解释:   ASP.NET每个应用程序实例有一个工作进程。它是多线程的,使用自己的应用程序池。大多数线程用于服务(用户)请求。每个请求(用户会话)都是一个线程。相应的响应可以是另一个线程。用户请求来自ISAPI的多个线程,ISAPI本身是多线程的。

AJAX不是多线程的。它使用与非AJAX网站相同的线程模型。页面请求(ajax或非ajax)可能导致在服务器上使用多个线程,但它仍然是客户端上的一个线程(浏览器使用单个线程)。

1 个答案:

答案 0 :(得分:2)

简而言之,是的。在ASP.NET中,请求/响应通常在单个线程中处理......“请求”和“响应”之间没有明显的区别,它只是ISAPI将请求信息传递给ASP.NET处理程序,它将执行适当的代码并写一个输出。 (虽然有一种机制可以在ASP.NET处于负载状态时将请求从一个线程迁移到另一个线程,并且需要有效利用可用线程。但我不能100%确定在何时或为何发生这种情况的详细级别。 )

浏览器端JavaScript和AJAX不是多线程的,但它可能会出现这种情况,因为AJAX调用是异步的,响应是事件驱动的;也就是说,一旦将请求分派给服务器,就不会阻止JavaScript线程。可以向服务器发送更多请求,响应可能会也可能不会按照发送的顺序返回。但是,因为核心确实只有一个线程,如果两个响应同时返回,一个将阻止另一个响应的执行,直到它完成。