我在google上搜索得相当不错,但没有任何内容可以回答我的问题。由于我对Web服务知之甚少(仅开始使用它们,而不是在过去几个月内构建它们),我想知道我是否应该按照我的意愿(在合理范围内)频繁地调用特定的Web服务,或者应该我建立了一次性的请求。
举个例子,我的应用程序旨在进行作业更新,对于某些类型的更新,它将调用Web服务。似乎我的选择是我可以在我的更新应用程序中创建一个数据表,需要Web服务并将整个数据表传递给Web服务,然后在Web服务中编写一个方法来处理数据表的更新。或者,我可以遍历整个更新表(包括除需要Web服务的更新之外的其他更新),并在更新需要时调用Web服务。
目前看来,将每个更新而不是数据表传递给Web服务会更简单。
就传递给Web服务的数据而言,每次更新都包含少量数据(3个字符串,最多120个字符)。就更新次数而言,可能不会超过200次。
答案 0 :(得分:5)
我想知道我是否可以按照自己的意愿(在合理范围内)频繁调用特定的Web服务,或者我是否应该一次性建立请求。
Web服务与否,通过网络路由的任何呼叫都将受益于构建多个请求,以便可以在一次往返中处理它们。在您的情况下,构建代表所有更新的对象将成为明显的赢家,尤其是在连接速度较慢的设置中。
当您通过网络进行呼叫时,当客户端与服务器进行通信时(或者不是Web服务),这些事情需要发生:
步骤2和6通常会因网络延迟而导致延迟。对于简单的操作,延迟通常会占据呼叫的时间。
用于高频交易的最快网络的延迟以微秒为单位;在常规的,它是在几毫秒。如果你在1ms延迟(每次往返2ms)的网络上逐个发送100个软件包,那么你在网络延迟上浪费了200ms!这五分之一秒,很多时候按照当今CPU的标准。如果你可以通过重组你的请求来消除它,那么这是一个很好的理由。
答案 1 :(得分:1)
您通常应该使用粗粒度远程接口而不是细粒度远程接口。
考虑为每次通话添加10ms的网络延迟 - 100次更新会有什么延迟?