长时间运行的异步API方法

时间:2016-06-30 14:59:32

标签: javascript c# asp.net asp.net-mvc asp.net-web-api

当客户端调用此方法时,我有一个ASP.NET API方法我将运行每个任务的4个任务,并调用url收集数据并将其作为对象列表返回。现在每个任务都需要不同的时间才能完成,所以我要找的就是这样。

  • javascript AJAX调用我的API方法
  • API方法运行4个任务并等待任何已完成的任务并返回数据
  • ajax再次回调API并查看已完成的任务并再次获取数据并将其显示在浏览器中

现在我的解决方案是保存从内存数据库行couchbase中的任务返回的数据,然后让浏览器上的计时器调用API以检查是否已添加任何新数据,然后将其带到所有任务完成。

我的问题是。是否有任何其他解决方案。我不想使用asp.net signalr

为了让我的想法在我脑海中清晰明白

  • 客户端调用API方法
  • API方法将一系列任务排入队列
  • 每个作业都将调用另一个API获取数据处理它并将其记录到内存数据库我将使用couchbase
  • 当My API方法完成记录作业时,它会返回客户端的密钥
  • 客户端可以使用此密钥调用另一个为其返回最新数据的API方法

此解决方案适用于此问题

  • 我有一种API方法,可以使用多家酒店提供商搜索酒店
  • 每个提供商返回我稍后需要处理此数据并将其返回给客户的数据。
  • 由于每个提供商都有自己的处理时间。一些提供商在5秒后给我回复,其他一些提供商30秒,其中一些甚至更多。
  • 我不希望客户端等待所有提供者完成而我希望客户端尽快获得结果以在浏览器上显示它然后我可以每次去更新UI并检查是否有新的提供商已完成将数据返回给我

2 个答案:

答案 0 :(得分:0)

使用signalR进行推送通知。数据准备就绪后,只需向客户端发送推送通知,告知数据已准备就绪。

答案 1 :(得分:0)

如果您不想使用SinglR,https://pusher.com/可能会帮助您