比较SOAP与REST API

SOAP - 简单对象访问协议 - 定义了一种非常强类型的消息传递框架,它严重依赖于XML和模式。REST-表示状态转移 - 是一种体系结构样式,它利用现有的和广泛采用的技术,特别是HTTP,并且不会创建任何新标准。REST可以将数据结构化为XML,YAML或任何其他机器可读格式,但通常,JSON是首选。

SOAP和REST - 都为构建基于SOA的应用程序提供支持。选择使用哪一个 - 很大程度上取决于实际需要的东西,从业务和架构的角度来看。通过查看某些环境中的优势和劣势,以及了解自己的项目范围,您可以做出最明智的决策。因此,让我们列出他们的主要差异,这将有助于您从两者中选择一个。

googletag.cmd.push(function() { googletag.display('waldo-tag-4084'); });

SOAP和REST API的比较

基础议定书

SOAP本身是用于开发基于SOAP的API的协议(通过HTTP)。

REST几乎与HTTP同义,通过REST规范并不强制要求它。

数据格式

SOAP完全依赖于XML来提供消息传递服务,这些服务在某些情况下会变得非常复杂,例如通过javascript访问Web服务。

REST可以使用逗号分隔值(CSV),JavaScript对象表示法(JSON)和真正简单的整合(RSS)中的数据。关键是您可以在一个易于使用您的应用程序所需语言进行解析的表单中获得所需的输出。

有状态

RESTful Web服务完全是无状态的。管理会话状态是客户自己的全部责任。服务器对此没有帮助。

通常,SOAP Web服务是无状态的 - 但您可以通过更改服务器上的代码轻松地使SOAP API具有状态

高速缓存

REST通过HTTP GET方法提供了良好的缓存基础结构,从而使响应数据可以标记为可缓存或不可缓存。该ETag标头是实现缓存提供你要计算的值应该是什么样一种廉价的方式一个很好的方式。

当使用HTTP作为传输机制时,SOAP通过HTTP POST请求发送。由于HTTP POST是非幂等的,因此无法在HTTP级别进行缓存。因此,应使用响应缓存优化模块中提供的信息缓存SOAP响应。

使用的HTTP谓词

REST主要用于HTTP,它使用HTTP GET,POST,PUT,DELETE和PATCH方法进行不同的CRUD操作。

SOAP还定义了对HTTP协议的绑定。绑定到HTTP时,所有SOAP请求都通过POST请求发送。

安全

REST基于HTTP - 它本身是一种非常不安全的协议。它通过TLS支持基本身份验证和通信加密。应在服务器上另外实施任何进一步的安全性。

SOAP安全性通过WS-SECURITY进行了很好的标准化,WS-SECURITY功能非常丰富,易于在应用程序代码中实现。

异步处理

当创建/更新资源非常耗时时,可能需要异步请求处理。在这种情况下,REST建议返回HTTP响应代码202 Accepted并发送队列的位置,其中任务完成的状态将在频繁的时间间隔内更新。REST对JAX-RS本身的异步API有很好的支持。

如果您的应用程序需要有保证的可靠性和安全性,那么SOAP 1.2提供了额外的标准来确保这种类型的操作。像WSRM - WS-Reliable Messaging这样的东西

摘要

总的来说,REST更容易开发,因为它利用了已经存在的Web,并且自由度有限(制作的选择更少,更简单)。SOAP提供了许多替代方案,开发起来也稍微困难一些,但提供了更多的替代方案和工作领域。