当前位置:  开发笔记 > 编程语言 > 正文

SOAP与XML-RPC或REST的性能

如何解决《SOAP与XML-RPC或REST的性能》经验,为你挑选了5个好方法。

关于使用XML-RPC或REST的解决方案的简单性的论点很容易理解,很难说.

我经常也听到过这样的论点,即SOAP增加的开销可能会显着影响已使用的带宽甚至延迟.我希望看到量化影响的测试结果.有谁知道这些信息的良好来源?



1> pjz..:

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

..现在你说你想要基准测试.好吧,在谷歌的帮助下,我发现一个人的测试显示REST比SOAP快4-6倍,而另一篇文章也支持REST.


很好的答案pjz,您是否意识到您的答案对XML-RPC没有任何说法,或者为什么它没有出现在需要考虑的最佳选择之中.

2> FlySwat..:

作为协议的REST不定义任何形式的消息信封,而SOAP确实具有此标准.

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

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


我认为当您尝试将REST视为协议时,问题就会出现.REST是一种可以使用HTTP协议的架构风格.
@Tim Cooper--创造REST这个术语的人强烈不同意这个主张,以及大多数帮助传播REST的人.[阅读更多有关REST的维基百科](帮助推广),希望能够理解为什么`REST!== XML over HTTP`.

3> MarkR..:

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

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

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

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



4> Troy Alford..:

有一些研究已经完成,你可能会发现信息.请参阅以下内容:

SO:休息与肥皂表现

问答:SOAP和REST 101

更新的SQL Server数据服务:Northwind REST和SOAP上载

在MSDN论坛上还有一个(有点过时的)关于该主题的有趣的性能对话.

简而言之 - 大多数这些来源似乎都同意SOAP和REST与通用数据的性能大致相同.然而,一些结果似乎表明,对于二进制数据,REST实际上可能性能较差.请参阅我链接的论坛中的链接以获取更多详细信息.



5> anjanb..:
扩大"pjz"的答案.

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

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有