Web服务:更频繁的“小”呼叫,或频率较低的“大”呼叫

时间:2010-03-22 17:56:54

标签: silverlight silverlight-3.0 web-services

一般情况下,让Web应用程序对Web服务进行大量调用以获取较小的数据块,或让Web应用程序减少调用次数并获取更大的数据块,是否更好?

特别是,我正在构建一个Silverlight应用程序,它需要从服务器获取大量数据以响应用户创建的查询。每个查询都可以从几百条记录返回到几千条记录。每条记录大约有30个字段,主要是十进制数据。我遇到了响应的有效负载大小超过服务允许的最大值之前的情况。

我想知道是否更好(对服务器/客户端/ Web服务更有效)垂直削减此有效负载 - 获取每个调用的单个字段的所有值 - 或水平 - 获取批量的完整记录每次通话。或者重要吗?

4 个答案:

答案 0 :(得分:4)

令我惊讶地发现,为了提供更好的过滤器,将数据量减少两倍甚至四倍,几乎总是能够更快地将呼叫数量增加一倍。

我发现我可以在发出一个新请求的同时转移200K。大多数微调请求大约需要3K,而课程大概需要50-100K。

如果超出有效负载大小,请更新有效负载大小或在服务器上构建流式CGI。这样更好。

答案 1 :(得分:3)

这绝对重要。您不希望Web服务繁琐 - 对于小型请求,您可能会发现延迟最终会比处理请求所花费的时间长。另一方面,显然你不想返回你不需要的数据。可以找到平衡点,通常涉及客户端能够以合理详细的方式从服务器中指定他们想要的内容 - 或者能够在一个Web请求中有效地发送“批量”请求。

答案 2 :(得分:3)

获取较小的数据集意味着用户必须等待更少的时间;这很好。

但是获得小数据集意味着他将不得不经常等待。

一种可能性是使用两种方法的组合,例如:

  • 对于第一个请求,只获取一个小数据集,以便能够更快地显示某些信息
  • 并且,对于下一个请求,获取更大的数据集,以减少HTTP请求
    • 当那些(有点长)请求发生时,用户已经有了要阅读的内容。

答案 3 :(得分:0)

我会说做一些像分页(一次显示X条记录)的事情。这将导致“小”调用,因为用户只会在需要时请求数据。这真的取决于你的情况。他们是需要一次查看所有数据还是只能一次看到它的小块?

请记住:小块=少等待一些数据。