21CTO 导读:如今,开发者们普遍的共识,REST是典型的首选协议,除非足够信服的理由使用SOAP。本文为各位开发者来做一个详细对比~
SOAP(简单对象访问协议)和REST(Representational State Transfer)都是Web服务的通信协议。SOAP长期以来一直是Web服务接口的标准方法,近年来它开始由REST主导,根据Stormpath统计,有超过70%的公共API使用 REST API 。
下面一起讨论SOAP与REST之间的主要区别和特点。
SOAP与REST的主要差异
REST通过一个单独、一致的接口来访问命名资源。包括互联网开放的API,REST 协议最常用。而 SOAP是将应用程序逻辑的组件公开为服务,而不是数据。它通过不同的接口运行。
简而言之,REST访问的是数据,而SOAP通过更标准化的消息传递并集成了执行操作。
在大多数情况下,用REST或SOAP都可以实现相同的结果(两者都可以无限扩展),两者在配置方式上还存在一些差异。
SOAP最初是由微软创建的,大概有十四五年的时间,它可比REST的资历要长得多,有传统协议的优势。REST现在也已经存在了一段时间,它使用HTTP协议,以一种比使用SOAP更简单的方式访问Web服务的方式来实现 API。
REST 比 SOAP 好用的几点:
除了使用HTTP的简单性之外,REST还提供了许多与SOAP相比的其它好处:
1)REST允许更多类型的数据格式,而SOAP只能使用 XML
2)与JSON(JSON可以更好地处理数据并提供更快的解析)相结合,让REST更易于使用。
我们要感谢JSON,REST为浏览器客户端提供了更好的支持。
3)REST提供了卓越的性能,特别是通过缓存来存储不经常改动的信息。
REST被雅虎,Ebay,亚马逊和谷歌等主要API服务的协议。
REST速度更快并且使用更少的网络带宽。它可以更轻松地与现有网站、APP 等应用集成,无需重构站点基础结构。这使得开发人员能够更快地工作,而不是花时间从头开始重写网站。另外,人们可以简便地添加其他功能。
但是,SOAP仍然存在于某些应用的首选协议中。在大部分应用中,REST仍是应用的首选协议,除非有令人信服的理由使用SOAP协议。
SOAP 好于 REST的一些特性
人们可以使用任一协议实现大多数的结果,有时候是个人偏好的问题。有一些用例更适合SOAP。比如,我们的应该需要很强的安全性,SOAP协议的WS-Security支持就可以派上用场了,它为数据隐私和数据完整性提供了非常好的保证,它还通过第三方提供身份验证支持,而不仅仅是SSL提供的点对点(SOAP和REST协议都支持SSL)协议。
SOAP的另一个优点,它提供了内置的重试逻辑来修复通信出错的问题。而REST没有内置的消息传递系统,如果通信失败,客户端需要重试来处理,REST也没有标准的规则集合,服务器和消费者需要理解内容与上下文。
再说一说SOAP的其它好处:
SOAP的标准HTTP协议可以跨防火墙和代理服务器进行操作,且无需修改 SOAP协议本身。由于 SOAP 使用的是复杂的XML格式,与ICE和COBRA等中间件相比,它的速度比较慢。
某些用例需要比使用HTTP 所能实现的事务,要求可靠性更高的可靠性,以及需要符合ACID标准的事务, 那么 SOAP 就是我们的不二之选。
在某些情况下,与REST相比,设计SOAP服务实际上也不那么复杂,对于支持复杂操作的Web服务,需要维护内容和上下文。设计SOAP服务需要在应用程序层中对事务、安全性、信任和其它元素进行较少的编码。
SOAP可以通过其它协议技术支持非常高的安全性和扩展性。除了WS-Security之外,SOAP还支持WS-Addressing,WS-Coordination,WS-ReliableMessaging等其他Web服务标准,这些标准可以在W3C上找到。
小结
我们做个总结,什么最好的协议?就是对团队最有意义的协议,在需要支持的客户类型以及灵活性方面所需要的协议。
目前大多数API都使用REST和JSON构建的,它消耗较少的带宽,对于刚开始做API以及可能对它编写服务的开发人员来说也更容易理解,大多数Web浏览器都更容易使用它,因此,使用 REST + JSON已成为大多数公共API的通用技术。
SOAP在某些情况下仍然是一种有价值的协议。但是,我们大可不必成为一个苦苦找某些用例来倡导 SOAP 的脑残粉~
作者:老夏
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/257485.html