0

我有一个 ASP.WEB Web Api 控制器,需要触发并忘记一些慢代码。什么是这样做的好方法?那就是我希望控制器向浏览器返回 HTML 响应,而慢速代码继续在某处运行。

从线程池中获取一个工作线程并传入一个由控制器创建的复杂对象是一个好主意吗?还是我需要编写一个单独的 Windows 服务来完成这项工作?

4

1 回答 1

2

您的解决方案取决于具体情况或您的情况和工作量。当您收到请求时,您当然可以开始新任务Factory.StartNew 。这在技术上没有任何问题。你应该考虑的事情:

  1. 我必须将数据返回给客户吗?
  2. 此任务将占用 Web 服务器资源,因此如果这些任务需要很长时间并且您获得大量流量,您可能会遇到客户排队等待开始处理的情况。在这种情况下,我认为带有 Windows 服务的后端服务器是一个更好的主意。
  3. 上述所有任务都受 IIS 重置的影响。他们可能会在处理您的后台任务期间被杀死。
于 2013-10-17T13:14:18.753 回答