【发布时间】:2019-07-23 20:30:48
【问题描述】:
我想知道托管在 IIS 中的单线程 .NET 应用程序中的请求/响应模型。例如,如果它是一个 WebAPI 应用程序,它是单线程读取一个大文件,处理它(对内容进行一些字符串操作)并在 API 响应中返回处理后的内容,为了论证,我们假设它需要处理文件需要 10 分钟。
现在,我在这里读到 ASP.NET IIS 映射是多线程的:
如果我在一分钟内向同一个 API 发出 20 个请求会怎样?
- 调用者#2 等会发生什么?等待 10 分钟,然后 IIS 才会启动?
- IIS 在哪里跟踪传入的请求?
【问题讨论】:
-
默认情况下,在 IIS 中运行的任何东西都是多线程的。
-
如果您的请求需要几秒钟以上的时间来处理,那么直接在 Web 应用程序中完成这项工作是没有意义的。相反,将其移至后台进程。客户可以通过点击您的 API 来启动工作,然后他们可以轮询结果(或使用 webhook 或其他技术来通知他们)。
标签: c# .net multithreading iis