SOAP与REST,何时使用一个而不是另一个?

时间:2013-11-20 16:25:59

标签: rest soap

每次我遇到这个问题时,我都很困惑,有什么特性可以帮助选择SOAP over REST或者其他方式?

我的意思是,除了REST与SOAP相比具有紧凑格式以及其他“次要”或“技术”差异这一事实之外,还有哪些“显而易见”的差异使其中一个更适合项目而不是另一个?

为了记录,我已经阅读了有关Stack Overflow上此事的所有其他问题(1 | 2 | 3 | 4),而不是其中一人回答了我的问题。

3 个答案:

答案 0 :(得分:11)

REST和SOAP之间的区别是基本的,但它们不是 不相似。最终,您仍需要传输完全相同的信息才能执行特定的抽象操作。通过选择要返回的信息很难使REST变得非常简单,而使用MTOM的SOAP可以有效地传输大型二进制块。甚至可以使用非XML编码和连接传输(例如,XMPP)与SOAP,使其 比REST更有效。

所以不要担心!

更值得思考的是,SOAP在某些语言中继续拥有更高级的工具支持,而其他语言则更喜欢REST。例如,如果您想要一个Java客户端用于您的服务,您将能够在几分钟内使用SOAP:只需通过工具引擎放置WSDL位置,您就拥有了一个基本客户端。另一方面,如果您正在使用Javascript客户端,那么您绝对更愿意处理REST接口; Javascript与REST一起工作很棒

这里要注意的一件事是,您可以同时获得SOAP和REST的服务支持(您可能需要将它们放在不同的端点上,但这并不是非常繁琐)。我使用我支持的服务(使用Java和Apache CXF)执行此操作,并且两者的开销很小:关键是我需要一个SOAP和REST接口使用的幕后干净的抽象接口。

答案 1 :(得分:2)

SOAP是RPC的一种形式,REST是可以随Web扩展的体系结构样式。

REST关注以下内容(从RESTful Web Services复制)

  • 寻址
  • 无国籍
  • 表示法
  • 链接和连接
  • 统一界面

关于REST的两本好书,并就你感兴趣的主题进行了一些讨论。

答案 2 :(得分:1)

如果您只是想要一个简单的可视化指南来帮助您根据应用程序要求测量SOAP和REST ......

Vijay Prasad Gupta汇集了一个简单,有用的流程图。

直接链接到流程图: https://drive.google.com/file/d/0B3zMtAq1Rf-sdVFNdThvNmZWRGc/edit

文章链接: https://www.linkedin.com/pulse/20140818062318-7933571-soap-vs-rest-flowchart-to-determine-the-right-web-services-protocol-for-your-needs