1 2 3 4 5 6 7 下一页 ASP.net 始终支持同步和异步 HTTP 处理程序。现在,ASP.NET 2.0 拥有了一些新增功能,可使开发人员更加方便快捷地创建异步页面。尤其是对于基于服务器的应用程序,异步操作是实现可伸缩性的基础。如果需要扩展现有 Web 应用程序,首先要考虑的是能向页面添加多少异步功能。 在这方面,ASP.NET 的行为与代表多个客户端执行某些后台工作的任何其他服务器应用程序十分相似。每个传入请求都分配给 ASP.NET 拥有的线程,该线程是从 ASP.NET 线程池选择的。在操作终止并为客户端生成某种响应之前,该线程将一直被阻止。线程要等待多长时间?ASP.NET 运行时环境可配置为定义一个自定义超时(默认值为 90 秒),但防止线程被阻止更为重要。 在处理可能耗时很长的操作时,超时最多只能确保该线程在给定秒数之后得到释放并返回到池中。实际上,您所需要的是防止长时间阻止该线程。理想情况下,您需要该线程开始一个请求,然后将其交给某个其他非 ASP.NET 线程。在将响应发送到客户端的操作完成时,将再次选择同一个线程或 ASP.NET 池中的另一个线程。这种模式称为异步 ASP.NET 页面。 就异步操作而言,应区分相对于用户的异步页面和相对于 ASP.NET 运行时的异步页面。对于相对于用户的异步页面,唯一的可行方法是 AJAX 操作。但是,使用 AJAX 来执行速度可能较慢的操作会降低对最终用户的影响,但不会为 ASP.NET 运行时带来任何缓解。 异步页面和 ASP.NET 运行时 线程在请求上挂起的时间越长,为了处理新的传入请求而从 ASP.NET 池减去一个线程的时间就越长。当没有可用于处理新请求的线程时,就会将这些请求排队。这可能会导致延迟和总体性能下降。 (责任编辑:admin) |