选择REST还是SOAP服务的指南?

10

有人有关于如何在REST和SOAP之间做出决策的文档或指南链接吗?我理解这两个概念,但想要一些关于关键决策点(例如安全性)的参考。


1
https://dev59.com/-nVD5IYBdhLWcg3wI36L 是一个更好的问题,有更好的答案。即使这个问题早些时候出现,它也应该被关闭为重复的。 - John Saunders
http://nishantshukla001webservices.blogspot.in/2015/09/webservices-soap-vs-rest-json-vs-xml.html - Nico
4个回答

6

谷歌首个搜索结果看起来非常全面。

我认为问题在于有太多人支持其中之一,最好是自己通过谷歌搜索来了解更多的利弊,然后做出自己的决定。

我知道这听起来有些糟糕,但最终这些设计决策落实到开发者/架构师身上,而99%的情况下,问题域将是决定因素(或至少应该是),而不是网络上的指南。


2
简单对象访问协议(SOAP)标准是定义消息架构和消息格式的XML语言,被Web服务使用,其中包含了操作的描述。Web服务描述语言(WSDL)是一种基于XML的语言,用于描述Web服务及其如何访问。它可以运行在SMTP、HTTP、FTP等上。需要中间件支持,并定义良好的机制来定义服务,如WSDL + XSD、WS-Policy。SOAP将返回基于XML的数据。SOAP提供了安全性和可靠性的标准。
表征状态转移(RESTful)Web服务是第二代Web服务。RESTful Web服务通过HTTP通信,而不需要XML消息或WSDL服务-API定义。对于REST不需要中间件,只需要HTTP支持。WADL标准,REST可以返回XML、纯文本、JSON、HTML等。
RESTful Web服务易于许多类型的客户端使用,同时使服务器端能够演变和扩展。客户端可以选择消费服务的某些或所有方面,并将其与其他基于Web的服务混合使用。
REST uses standard HTTP so it is simplerto creating clients, developing APIs 
REST permits many different data formats like XML, plain text, JSON, HTML where  as  SOAP only permits XML.
REST has better performance and scalability.
Rest and can be cached and SOAP can't 
Built-in error handling where SOAP has No error handling
REST is particularly useful PDA and other mobile devices.

REST服务易于与现有网站集成。

SOAP具有一组协议,其中提供了安全性和可靠性等标准,并与其他符合WS的客户端和服务器进行互操作。 SOAP Web服务(如JAX-WS)在处理异步处理和调用方面非常有用。

对于复杂的API,SOAP将更加有用。


1
你没有注意到之前的回答已经提供了这个信息吗? - John Saunders

0

我认为REST和SOAP都可以用于实现类似的功能,但通常情况下,当需要SOAP的特定功能时,应该使用SOAP,否则REST的优势使其成为一般最佳选择。然而,REST和SOAP经常被称为“Web服务”,并且一个常常被用来代替另一个,但它们是完全不同的方法。REST是一种构建客户端-服务器应用程序的架构风格。SOAP是一种协议规范,用于在两个端点之间交换数据。

我非常赞同+Rob Cooper在他的帖子中的观点。是的,有很多支持者。我已经列出了SOAP和REST之间的区别


0

有一个很好的流程图可以帮助您在 REST 和 SOAP 之间做出决策。

流程图链接: 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

我用来做出这个决定的另外两个因素是:

1)服务的客户端是否需要使用除 XML(例如 JSON)以外的媒体类型。如果是,那么请使用 REST。

2)服务的客户端是否总是应用程序/服务器(例如不是 RIA 或 AJAX 客户端)。如果不是,则更倾向于使用 REST,因为在使用 AJAX 时更容易消费 REST 服务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接