从rest api中检索大量数据

时间:2012-07-12 20:25:03

标签: c# asp.net web-services rest

我打电话给第三方休息api.this rest api返回超过2千条记录需要花费很多时间 检索此信息。我想在asp.net页面中显示这些记录。 记录在页面中成功显示,但问题是显示/检索此信息需要很长时间。

我把这个API称为下拉更改,因此api调用可能会一次又一次。这意味着它不是一次性调用 我也无法缓存此信息,因为在服务器端可能会有信息发生变化。

那么我如何减少下载时间或任何技巧(不支持分页),有什么建议吗?

提前致谢

3 个答案:

答案 0 :(得分:1)

  

那么我如何减少下载时间或任何技巧(不支持分页),有什么建议吗?

如果API不支持分页,那么从消费者的角度来看,除了可能缓存数据以避免昂贵的HTTP调用之外,你所做的事情并不多。

没有奇迹。例如,您可以将client.MaxDownloadTimeMs属性设置为5,并在不到5毫秒的时间内获取大量数据。

答案 1 :(得分:1)

对于任何给定的问题,总会有一个解决方法,即使它一见即不到。

我遇到过这样的情况,这就是我们所做的:

  • 首先,请记住,实时一致性只是在没有编写大量代码的情况下无法实现的。例如,如果用户从您的服务请求数据,然后在页面上呈现该数据,那么如果在更准确的时间更新源,用户可能会看到数据外数据。

    所以我们需要接受数据最终会保持一致

  • 然后考虑以下内容,定期使用外部服务复制数据库中的数据

  • 公开此本地数据,允许分页并从客户端代码中使用

作为任何设计决策,您需要进行权衡取舍以做出最终选择,这些都是我们在设计中遇到的问题:

  • 当用户请求数据时,潜在的数据将不一致。您可以每隔xxx分钟将数据轮询到服务器,具体取决于它的更改频率(注意:通常我们作为开发人员,我们对这种数据不一致感到满意,我们希望实时查看所有内容,但事实是,最终用户,大部分时间都可以忍受这种延迟,因为这是他们在现实生活中使用的方式,请咨询最终用户以收集他们对此的看法。可以从蓝皮书中的埃里克埃文斯那里了解更多关于此的内容

  • 您必须编写额外的代码来本地维护数据

可悲的是,当您处理具有这些条件的第三方服务时,几乎没有可供选择的选项,我建议您与最终用户一起评估所有权利,以便选择最适合您的解决方案需要

备选方案:

  • 由于我已经说过数据不是一直都是一致的,那么也许你可以考虑缓存对服务的调用=)

  • 通常最简单的方法总是面对这样的事情的最佳方式,因为你没有在你的帖子中提到它我会在这里评论。您是否曾尝试向第三方组织请求允许分页?与您的第三方合作伙伴联系并讨论此事。

  • 如果可以,请评估其他来源(提供类似服务的其他第三方公司)

答案 2 :(得分:0)

您唯一的选择是将数据缓存一段时间。如果第三方api有一个电话,您可以制作比您的下拉更改更通用的,您可以在页面加载之前调用它以获取所有可能的下拉值并将结果存储一段时间。然后每次只返回适当的数据。

另外,看一下第三方api是否有任何gzipping(压缩)数据的选项,然后再发送给你。我创建了几个API,并为大型数据集创建了这种类型的选项。