Web-Api:获取请求时 - 给出响应但随后继续执行与请求相关的工作

时间:2015-01-20 17:56:07

标签: asp.net-web-api

我们有一个基于web-api的服务器,用户会提出请求 许多请求的后果超出了我们向用户提供的答案。
所以我们想给他/她答案,然后继续处理其含义。

有时我们需要这种“下一步行动”快速发生。有时候我们可以等一下。

我虽然有以下几种选择:

  • 在给出回复之前 - 打开另一个工作线程
    但在我看来非常昂贵,甚至可能无法工作。

  • 在给出回复之前 - 将作业放在一些听取的队列上 但在我看来,它可能会将执行推迟到很多

我是对的吗?我错了吗? 针对此类问题的准则/最佳做法是什么

1 个答案:

答案 0 :(得分:1)

我认为在这种情况下进行后台处理的最佳方法是使用一些队列,例如azure webjobs或者像NServiceBus这样更复杂的东西。您只需发送消息/订单处理并返回响应,通知用户此订单已被接受。甚至还有用于此类操作的特殊HTTP代码(202)。

打开另一个线程并不是那么好,因为你失去了对它的控制。没有简单的方法来监控它。如果该线程崩溃或应用程序池回收怎么办?您丢失了所有数据,用户将永远等待。它不可靠