在争论有关的简单的解决方案使用XML-RPC或休息易于理解和难以争辩的。

我常常还听取了参数,增加开销的肥皂可能显着影响使用的带宽和甚至可能延迟。我想看到的结果的测试量化的影响。任何一个知道一个很好的来源于这样的信息?

有帮助吗?

解决方案

有一些研究已经完成关于这个你能找到的信息。请参阅以下:

还有一个(有些出的日期)有趣的表现谈话的主题 MSDN论坛.

在短大多数的这些来源似乎都同意,肥皂和其余的大致相同性能,对通用的数据。一些成果,但是,似乎表明,与二进制数据,其余实际上可能不太高的性能。请参阅链接在论坛上,我相联系的更多详细说明这一点。

其他提示

SOAP与REST速度的主要影响与线速无关,但与可达性有关。 REST建议使用Web的语义而不是尝试通过XML进行隧道传输,因此RESTful Web服务通常设计为正确使用缓存头,因此它们可以很好地与Web的标准基础结构(如缓存代理甚至本地浏览器缓存)配合使用。此外,使用Web的语义意味着像ETag和自动zip压缩这样的东西是很好的方法来提高效率。

..现在你说你想要基准测试。好吧,在谷歌的帮助下,我找到了一个人,其测试显示REST比SOAP快4-6倍,另一个论文也有利于REST。

作为协议的REST没有定义任何形式的消息信封,而SOAP确实有这个标准。

因此,尝试和比较两者有点简单,它们是苹果到橙子。

也就是说,SOAP信封(减去数据)只有几k,因此如果您通过SOAP和REST检索序列化对象,速度应该没有任何明显的差异。

SOAP和使用XML的任何其他协议通常会使您的消息膨胀很多 - 根据上下文,这可能是也可能不是问题。

像JSON这样的东西会更紧凑,可能更快地序列化/反序列化 - 但不要因为这个原因而专门使用它。做任何你认为有意义的事情,如果这是一个问题就改变它。

通常使用HTTP的任何东西(除非它重用HTTP 1.1 keepalive连接,许多实现都没有)为每个请求启动一个新的TCP连接;这非常糟糕,特别是在高延迟链接上。 HTTPS更糟糕。如果您有一个发件人到一个接收者的很多短请求,请考虑如何将这个开销拿出来。

对任何类型的RPC(无论是SOAP还是其他)使用HTTP总是会产生这种开销。其他RPC协议通常允许您保持连接打开。

扩展“pjz”的回答。

如果您正在获取大量基于SOAP操作的INFORMATION(get *类型的调用),那么目前无法缓存它们。但是,如果您要使用REST实现这些相同的操作,则可能会缓存数据(取决于您的业务环境),如上所述。因为SOAP使用POST进行操作,所以它无法在服务器端缓存信息。

SOAP肯定更慢。有效载荷明显较大,组装,运输,解析,验证和处理的速度较慢。

我不知道基准测试问题的任何答案,但是,我对SOAP格式的了解是肯定的,它确实有开销,但是每个请求的开销不会增加:如果你有一个元素被发送到Web服务,您有开销+一个元素构造,如果您有1000个元素发送到Web服务,您有开销+ 1000元素构造。在为特定操作格式化XML请求时会发生开销,但请求中的每个参数元素的格式都相同。

如果您坚持使用可重复的,短暂的数据突发(例如,500个元素),速度应该是可以接受的。

我猜这里的主要问题是如何进行比较RPC用肥皂。

他们都服务于同一办法的通信抽象的具有存根的对象操作和原始的/复杂的数据类型你回来没有真正地知道这一切如何处理下面。

我总是会更喜欢(星)RPC因为

  • 这是轻质的
  • 有许多伟大实现为所有编程语言出有
  • 这是简单易学/用/创建
  • 它的快速(特别是结果的方式)

虽然有原因你应该用肥皂,即如果你需要的命名参数,而不是依靠他们正确了

一些更多细节你得到这个计算器 的问题

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