我工作的一个网络服务的时刻和存在的潜在返回的结果可能很大(>5mb).

这是完全有效,对于这组数据是这个大和网络的服务可以被称为同步或异步的,但我想知道什么人们的想法是对的如下:

  1. 如果失去连接, 整个结果将不得 再生和重发。有没有 任何种方式我可以做任何种类的 "恢复",如果失去连接 或重置?

  2. 正在发送一个结果是设置这个大甚至是适当的?它会更好地执行某种形式的"寻呼"里的结果是产生和保存在服务器和客户然后可以下载大块的结果集中在较小的数额和重新装配设置在他们结束了吗?

有帮助吗?

解决方案

我已经看到所有的三个办法, , 存储和检索, , 大规模推.

我认为,问题的解决方案度在一定程度上取决于为什么你的结果设定的是如此之大以及它是如何产生的。做你的结果随着时间的推移,是他们计算出的一次,然后推,你想流他们尽快回来,你有他们吗?

寻呼方式

以我的经验,利用寻呼的方法是适当的客户需要的快速进入合理地大小的块的结果设定类似的网页搜索的结果。考虑在这里是总体闲聊你的协议,高速缓存的整个结果之间设定客户页的请求,和/或处理时间需要产生的结果页。

存储和检索

存储和检索的时非常有用的结果不是随机访问,结果设定增长的大小作为查询是处理。要考虑的问题在这里的是复杂的客户,如果你可以向用户提供的部分结果,或者如果你需要计算出所有成果返回之前,任何东西给客户(为排序的结果从分布式搜索引擎)。

大规模推

大规模的推动的方法几乎可以肯定是有缺陷的。即使如果客户需要的所有信息,并且需要推动在整体结果,我建议采取的办法的 WS-ReliableMessaging (直接或通过自己的简化版本)和分割结果。通过这样做你

  1. 保证件到达的客户
  2. 可以放弃的区块,一旦你得到一种收据的客户
  3. 可以减少可能出现的问题与存储的消耗从具有保留5MB XML,DOM,或者无论在存储器(假设你不是处理结果在一流的方式)在服务器和客户的双方。

像其他人所说的那样,不要做任何事直到你知道你的结果设定的大小、它是如何产生的,并且总体业绩是实际的问题。

其他提示

有没有硬性法律,对5Mb结果设置的尺寸。超过400Mb可以 难以发送.

你会自动获取同步处理程序(由于你使用。net)

实现某种形式的"寻呼"在哪里 该结果是产生和保存 在服务器和客户然后可以 下载大块的结果集中在 数额较小的和重新装配 设置在他们的末端

这就是已经发生的事情对于你们--这就是所谓tcp/ip;-)重新实现,可以矫枉过正。

同样--

整个结果将不得 再生和再发送

如果这是MS SQL,例如,是产生大部分的结果--然后重新产生它将利用某些隐含的cacheing在SQL服务器和后代将会更快。

某种程度上可以不用担心这些问题,直到他们表面的"真正"的问题--因为该平台(s)你使用的照顾很多的表现瓶颈。

我有点不同意secretGeek的评论:

这就是已经发生的事情对于你们--这就是所谓tcp/ip;-)重新实现,可以矫枉过正。

有些时候你可能会想要这么做,但实际上只从一个用户界面的观点。如果实现某种方式对任何一流的数据的客户(经喜欢的东西一pushlets机构),或大块进入的网页因为你的建议,然后你可以载有一些真的很小部分在客户然后慢慢地建立起来的用户界面的充分数量的数据。

这使得一个油布、更快UI(从用户的角度看),但你必须评估如果额外的努力将是值得的...因为我不认为这将是一个微不足道的工作量。

所以这听起来像你会感兴趣的解决方案增加了'开始记录号码"和"最后的记录次数的参数到你的网的方法。(或页面数量"和"结果每页')

这应该不会太难的,如果后备存储是sql服务器(或甚至mysql),因为他们已经建立,支持进行编号。

尽管这你应该能够避免这样做,任何一届会议管理服务器上,避免任何明确的缓存的结果设定,只是依靠背储存的缓存,以保持你的生活简单。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top