c# - 调用 Web 服务的成本是多少?

标签 c# web-services

我在谷歌上进行了相当不错的搜索,但没有弹出任何内容来回答我的问题。由于我对网络服务知之甚少(最近几个月才开始使用它们,而不是构建它们),我想知道我是否应该按我希望的频率(在合理范围内)调用特定的网络服务,或者应该我一次性建立请求。

举个例子,我的应用程序旨在进行作业更新,对于某些类型的更新,它会调用网络服务。似乎我的选择是,我可以在需要 Web 服务的更新应用程序中创建一个数据表,并将整个数据表传递给 Web 服务,然后在 Web 服务中编写一个方法来处理数据表的更新。或者,我可以遍历我的整个更新表(其中包括除需要 Web 服务的更新之外的其他更新)并在更新需要时调用 Web 服务。

目前看来,将每个更新而不是数据表传递给网络服务对我来说似乎更简单。

就传递到网络服务的数据而言,每次更新都将包含少量数据(3 个字符串,长度最多 120 个字符)。就更新数量而言,可能不会超过 200。

最佳答案

I was wondering whether I should be ok to call a particular web service as frequently as I wish (within reason), or should I build up requests to do in one go.

无论是否使用 Web 服务,通过网络路由的任何调用都将从建立多个请求中受益,这样它们就可以在一次往返中得到处理。在您的情况下,构建一个代表所有更新的对象将是一个明显的赢家,尤其是在连接速度较慢的设置中。

当您通过网络进行调用时,当客户端与服务器通信时(同样,无论是否为 Web 服务),这些事情需要发生:

  1. 与您的通话相关的数据在客户端上序列化
  2. 序列化数据发送到服务器
  3. 服务器反序列化数据
  4. 服务器处理数据,产生响应
  5. 服务器序列化响应
  6. 服务器将序列化的响应发送回客户端
  7. 响应在客户端反序列化

第 2 步和第 6 步通常会因网络延迟而导致延迟。对于简单的操作,延迟通常会影响调用时间。

用于高频交易的最快网络的延迟以微秒为单位;在常规的情况下,它以毫秒为单位。如果您在网络上一个一个地发送 100 个包,延迟为 1 毫秒(每次往返 2 毫秒),那么仅网络延迟就浪费了 200 毫秒!这五分之一秒,以当今 CPU 的标准来看是很多时间。如果您可以简单地通过重组您的请求来消除它,那么这就是这样做的一个很好的理由。

关于c# - 调用 Web 服务的成本是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21188663/

相关文章:

c# - 如何在一台服务器上使用WebSocket并在同一局域网内的另一台PC上访问它?

c# - C# 事件创建的 VB 等效项

web-services - 将 Future[T] 转换为始终成功的 Future[Option[T]]

android - ASIHTTPRequest 等效于 Android 或任何 HTTP 请求管理器/包装器?

java - 如何从 Axis2 SOAP 响应中删除 header 属性

c# - 使用 LINQ 读取 XML 字符串

C# 相当于 Java 的 timer.scheduleAtFixedRate

c# - 不同的验证消息和验证摘要消息

c# - WCF 服务启用跟踪

web-services - 没有 express 的Nodejs REST