当前位置:  开发笔记 > 前端 > 正文

休息与肥皂.REST有更好的性能吗?

如何解决《休息与肥皂.REST有更好的性能吗?》经验,为你挑选了5个好方法。

我在这里读到了一些关于肥皂和休息的问题,但我找不到我要找的答案.我们有一个使用Soap Web服务构建的系统.该系统性能不高,正在讨论替换所有用于REST Web服务的Soap Web服务.有人认为Rest有更好的表现.我不知道这是不是真的.(这是我的第一个问题)假设这是真的,使用REST而不是Soap是否有任何缺点?(我们失去了什么吗?)

提前致谢.



1> wuher..:

表现是广泛的话题.

如果您的意思是服务器的负载,则REST具有更好的性能,因为它在HTTP之上承担最小的开销.通常,SOAP会带来一堆不同的(生成的)处理程序和解析器.无论如何,性能差异本身并不大,但RESTful服务更容易扩展,因为您没有任何服务器端会话.

如果您的意思是网络性能(即带宽),则REST具有更好的性能.基本上,它只是HTTP.没有开销.因此,如果您的服务无论如何都运行在HTTP之上,您就不会比REST更精简.此外,如果您使用JSON(而不是XML)对表示进行编码,则可以节省更多字节.

简而言之,我会说'是',你会更加高效地使用REST.此外,它(在我看来)将使您的界面更容易为您的客户消费.因此,不仅您的服务器变得更瘦,而且客户端也变得更精简.

但是,有几件事要考虑(因为你问'你会失去什么?'):

RESTful接口往往更加"健谈",因此根据您的域以及您如何设计资源,您最终可能会执行更多HTTP请求.

SOAP具有非常广泛的工具支持.例如,顾问喜欢它,因为他们可以使用工具来定义界面并生成wsdl文件,开发人员喜欢它,因为他们可以使用另一组工具从该wsdl文件生成所有网络代码.此外,XML作为表示具有模式和验证器,在某些情况下可能是关键问题.(JSON和REST确实有类似的东西,但工具支持远远落后)


我不相信REST界面更加健谈,但除此之外,它是一个坚实的答案.

2> James Anders..:

SOAP需要解析XML消息以及所有 extra 要发送和接收的东西.

REST通常使用更简洁的东西,并像JSON一样轻松解析.

然而在实践中,差异并不是那么大.

从XML构建DOM通常是在C++或Java中使用超快速的超级优化代码片段,如XERCES,而大多数JSON解析器都是您自己的或解释的类别.

在快速网络环境(LAN或宽带)中,发送一个或两个K与10到15 k之间没有太大区别.



3> jbrendel..:

您可以将问题表达为REST和SOAP在现有系统中以某种方式互换.他们不是.

当您使用SOAP(一种技术)时,通常会有一个在"方法"中定义的系统,因为实际上您正在处理RPC.

当您使用REST(架构风格,而不是技术)时,您创建的系统是根据"资源"定义的,而不是根据方法定义的.SOAP和REST之间没有1:1映射.系统架构根本不同.

或者你只是在谈论"RPC via URI",它经常与REST混淆?


如果您的应用程序设计为松散耦合,则Web服务实现可以互换.您的答案有点偏离主题,您对系统的可互换性做出的假设是错误的.
我认为这是一个合理的答案.虽然它以寻求澄清的问题结束,但如果在大多数情况下它确实尝试用相关的事实信息来回答问题,那么这并不能使其无效.虽然它本身并没有解决性能问题,但它解决了问题的基本前提的有效性,这与提供问题的完整答案相关.(无论是对还是错是一个单独的事情,通过上/下投票比删除投票更好地解决.)

4> KBoek..:

我绝对不是SOAP vs REST方面的专家,但是我知道的唯一性能差异是SOAP在发送/接收数据包时有很多开销,因为它基于XML,需要SOAP标头,等等。REST使用URL + querystring发出请求,因此不会通过网络发送那么多的kB。

我敢肯定,SO上还有其他人可以为您提供更好,更详细的答案,但是至少我尝试过;)



5> Shawn H..:

其他答案似乎忽略了一件事是REST支持缓存和HTTP的其他好处.虽然SOAP使用HTTP,但它不利用HTTP的支持基础结构.SOAP 1.1绑定仅定义POST动词的使用.这是通过引入GET绑定在1.2版本中修复的,但是如果使用旧版本或不使用适当的绑定,这可能是一个问题.

安全性是另一个关键性能问题.REST应用程序通常使用TLS或其他会话层安全机制.TLS比使用WS Security等应用程序级安全机制快得多(WS Security也存在安全漏洞).

但是,我认为在比较基于SOAP和REST的服务时,这些主要是小问题.您可以找到SOAP或REST性能问题的解决方法.我个人认为,SOAP和REST(REST都不是指基于HTTP的REST服务)都不适合需要高吞吐量和低延迟的服务.对于这些类型的服务,您可能希望使用Apache Thrift,0MQ或无数其他二进制RPC协议.

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