MVC长期Web服务请求

时间:2015-08-17 13:53:19

标签: asp.net-mvc asp.net-web-api

我开发了一个使用MVC调用第三方Web服务的系统。此服务基于SQL表中的单个记录。

客户希望更改规范,现在将“批量”记录发送到Web服务并获取结果。

对于一小部分记录,这可以工作,但很多时候可以发送数百条记录,这可能需要很长时间(> 5分钟)。一些记录,由于各种原因也不会成功,所以在进程运行后,我需要显示失败的记录并提供用户“编辑”记录的能力,然后重新提交那些失败的记录

我已经决定将这个过程卸载到另一个服务(WebApi?)并轮询该服务以查看它何时完成但不确定从哪里开始。

有人能指出方向吗?

此致

2 个答案:

答案 0 :(得分:0)

将它们排入表中(两个表(队列和结果)或一个表(带结果列的队列);要么取决于数据的复杂程度)。要处理它,请查看单独的服务(更可扩展,因为您可以添加更多的工作服务来完成更大的工作负载),或者像Quartz.net(如果您想将它保存在一个应用程序中)。

只要您不依赖状态/连接进行构建,就可以合理地扩展(在高峰时段添加更多工作人员或在应用程序增长时处理更大的工作负载)。

如果关注UI,您还可以查看SignalR之类的内容,以通知用户作业已完成。

答案 1 :(得分:0)

对于长时间运行的进程,

Web APIASP.NET MVC通常不是一个很好的选择。等待HTTP请求完成是不可靠的,并且您无法使用后台线程来处理您的数据,因为Web服务器(如果是IIS)可能决定回收应用程序池并且您的处理线程将是暂停。

它应该是一个后台工作者的工作。您可以将待处理项目放入队列或数据库中,然后逐个处理它们以便在您的工作者应用程序中进行处理。处理结果可以推送到数据库中。