【问题标题】:Considerations for threading in web environmentWeb 环境中线程的注意事项
【发布时间】:2009-11-15 06:07:40
【问题描述】:

我开始使用 ASP.NET Web 开发,想知道多线程标准 winforms 应用程序与在 IIS 中运行的用 asp.net 编写的基于 Web 的应用程序有什么区别。是否有任何区别,如果有,线程化 Web 应用程序的限制(以及相反的任何积极因素)是什么, 提前谢谢你

【问题讨论】:

    标签: asp.net multithreading


    【解决方案1】:

    在 Windows GUI 世界中,您始终拥有可用于与用户交流的“UI 线程”。例如,您可以在 UI 线程中启动一个BackgroundWorker,它会在完成其工作后在 UI 线程中引发一个事件:在 Windows UI 应用程序中,您可以非常确定 UI 线程仍然存在,除非用户已关闭应用程序。

    在网络世界中,您没有等效的主线程。只有网络请求:有时没有,有时同时有很多;甚至有可能一个请求会在您不知情的情况下由多个线程处理。如果你用一个冗长的操作启动一个后台线程,你需要要么

    • 延迟完成网络请求,直到后台线程完成 - 这意味着用户的响应时间很慢,并且以某种方式破坏了后台线程的目的或
    • 定期(在未来的请求中)检查线程的状态,并在完成时通知用户。

    当然,如果您希望在线程完成后进行一些用户交互,这只是一个问题。如果不这样做,只需启动它,它最终会完成(除非有人重新启动 IIS)。

    【讨论】:

      【解决方案2】:

      线程在网络世界中并不是真正的问题。没有任何状态,每个请求都是网页的一个新实例。有一些方法可以跟踪请求之间的状态,例如 cookie、会话状态、视图状态。

      【讨论】:

      • 这不是真的。许多网站在服务器端使用线程。
      • @liam 这个问题是关于 ASP.NET 的,已有 4 年历史,是那个时期的有效答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-11
      • 1970-01-01
      • 2010-09-18
      相关资源
      最近更新 更多