从Web Api请求启动后台任务

时间:2013-10-16 16:51:05

标签: task-parallel-library asp.net-web-api tpl-dataflow

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

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

1 个答案:

答案 0 :(得分:2)

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

  1. 我是否必须将数据返还给客户?
  2. 此任务将耗尽Web服务器资源,因此如果这些任务需要很长时间并且您获得大量流量,则可能会遇到客户排队等待刚刚开始处理的情况。在这种情况下,我认为使用Windows服务的后端服务器是一个更好的主意。
  3. 上述所有任务都受IIS重置限制。在处理后台任务时可能会将其杀死。