gpt4 book ai didi

c# - 通过 Web 服务返回大量结果

转载 作者:太空狗 更新时间:2023-10-29 17:55:46 25 4
gpt4 key购买 nike

我目前正在处理网络服务,返回的结果可能会非常大(> 5mb)。

这组数据这么大是完全正确的,Web 服务可以称为同步或异步,但我想知道人们对以下内容有何看法:

  1. 如果连接丢失,整个结果集必须是重新生成并再次发送。有没有我可以做任何事“恢复”如果连接丢失还是重置?

  2. 发送这么大的结果集是否合适?在生成结果集并将其存储在服务器上,然后客户端可以下载较小数量的结果集 block 并在其末端重新组装结果集的情况下,实现某种“分页”会更好吗?

最佳答案

我已经看到了所有三种方法,分页存储和检索以及大量推送

我认为你的问题的解决方案在某种程度上取决于你的结果集为何如此之大以及它是如何生成的。您的结果是否会随着时间的推移而增长,它们是否会一次性全部计算出来然后推送,您是否希望在获得它们后立即将它们流回?

分页方法

根据我的经验,当客户端需要快速访问类似于搜索结果页面的合理大小的结果集 block 时,使用分页方法是合适的。这里的考虑因素是您的协议(protocol)的整体聊天性、客户端页面请求之间整个结果集的缓存,和/或生成结果页面所需的处理时间。

存储和检索

当结果不是随机访问并且结果集的大小随着查询的处理而增长时,存储和检索很有用。这里要考虑的问题是客户端的复杂性,以及您是否可以向用户提供部分结果,或者您是否需要在将任何结果返回给客户端之前计算所有结果(考虑对分布式搜索引擎的结果进行排序)。

大规模推送

大规模推送方法几乎肯定是有缺陷的。即使客户端需要所有信息并且需要将其推送到一个单一的结果集中,我也建议采用 WS-ReliableMessaging 的方法(直接或通过您自己的简化版本)和分块你的结果。通过这样做你

  1. 确保作品到达客户手中
  2. 可以在收到客户的收据后立即丢弃 block
  3. 可以减少内存消耗的可能问题,因为必须在服务器端和客户端保留 5MB 的 XML、DOM 或内存中的任何内容(假设您不以流方式处理结果)。

不过就像其他人所说的那样,在您知道结果集大小、结果集的生成方式以及整体性能成为实际问题之前,不要做任何事情。

关于c# - 通过 Web 服务返回大量结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com