REST几乎总是更快的。SOAP的主要优点在于它提供了一种机制,使得服务可以向客户端描述自己,并宣传自己的存在。
REST更加轻便,可以使用几乎任何工具来实现,从而降低带宽和学习曲线。然而,客户端必须知道要发送什么和期望什么。
一般来说,当你将API发布到外部且该API非常复杂或者可能会发生变化时,SOAP会更有用。除此之外,REST通常是更好的选择。
REST与SOAP Web服务
我发现现在很多新的Web服务使用REST架构而不是SOAP。让我们先解释一下什么是REST。
什么是REST Web服务?
REST代表{表征性状态转移},这基本上意味着每个唯一的URL都是某个对象的表示。您可以使用HTTP GET获取该对象的内容,使用POST、PUT或DELETE来修改该对象(实际上,大多数服务使用POST来进行此操作)。
谁在使用REST?
雅虎的所有Web服务都使用REST,包括Flickr和Delicious。
API使用它,pubsub,bloglines,Technorati,eBay和Amazon都有REST和SOAP Web服务。
谁在使用SOAP?
Google似乎一贯地使用SOAP实现他们的Web服务,除了Blogger,它使用XML-RPC。企业软件中也会找到SOAP Web服务。
REST vs. SOAP
正如你可能已经注意到的那样,我提到使用REST API的公司并没有存在太长时间,他们的API大多数都出现在今年。因此,如果创建Web服务可以成为时尚的话,REST绝对是时尚的方式。 REST Web服务的主要优点是:
易于使用 - 有时很严格-类型检查,遵循合同开发工具对于消费Web服务而言,有时在哪种方式更容易之间需要做出权衡。例如,Google的AdWords Web服务在ColdFusion中真的很难使用,它使用SOAP头和许多其他使其有点困难的东西。相反地,Amazon的REST Web服务有时可能难以解析,因为它可以高度嵌套,而且基于您搜索的内容,结果架构可能会有所不同。
无论您选择哪种架构,都要确保开发人员可以轻松访问它,并且有很好的文档说明。
SOAP
简单对象访问协议(SOAP)是一种标准,用于定义消息体系结构和消息格式的XML语言,被Web服务使用。它包含操作的描述。
WSDL是一种基于XML的语言,用于描述Web服务及其如何访问。它可以在SMTP、HTTP、FTP等上运行。它需要中间件支持和明确定义的机制来定义服务,例如WSDL+XSD和WS-Policy。SOAP将返回基于XML的数据。
REST
表述性状态转移(RESTful)Web服务是第二代Web服务。
RESTful Web服务通过HTTP通信,而不是基于SOAP的服务,并且不需要XML消息或WSDL服务API定义。对于REST,不需要中间件,只需要HTTP支持。它是一个WADL标准,REST可以返回XML、纯文本、JSON、HTML等。
REST vs. SOAP
SOAP:
► SOAP是一种简单对象访问协议,可在TCP/UDP/SMTP上运行。
► SOAP以XML格式读取和编写请求响应消息。
► SOAP使用接口定义服务。
► 由于SOAP具有自己的安全性和明确定义的标准,因此更加安全。
► SOAP遵循RPC和文档样式来定义Web服务。
► SOAP使用SOAP-UI作为客户端测试工具。
REST
► REST是表现层状态转移,使用底层HTTP协议。
► REST是无状态的。
► REST是一种用于描述和定义Web服务的架构风格。
► REST可以在JSON/XML /Plain HTML格式下读取和编写请求响应消息。
► REST为Web服务中的每个资源使用URI。资源可以是图像、文本、方法等。
► REST使用一组动词,如HTTP的GET、POST、PUT、DELETE。
► REST比SOAP UI更易于开发和管理。
► REST具有轻量级的客户端工具或插件,可轻松集成到浏览器中。
► REST服务可缓存。
SOAP Web服务:
RestWeb服务:
SOAP Web服务总是执行POST操作,而使用REST您可以选择特定的HTTP方法,如GET、POST、PUT和DELETE。
例如:使用SOAP获取项目时,您应创建请求XML,但在REST的情况下,您可以直接在URL中指定项目ID。