我看过各种网站,它们提供的唯一答案是:Restful Web服务使用Http自己的方法,如(GET、POST、PUT、DELETE)...而SOAP基础Web服务使用自己的自定义方法。
然而,我不理解这些答案的全部意义。为什么这些东西证明自己比基于SOAP的Web服务有如此大的优势?
下面是一个例子:
我看过各种网站,它们提供的唯一答案是:Restful Web服务使用Http自己的方法,如(GET、POST、PUT、DELETE)...而SOAP基础Web服务使用自己的自定义方法。
然而,我不理解这些答案的全部意义。为什么这些东西证明自己比基于SOAP的Web服务有如此大的优势?
下面是一个例子:
REST天然适用于Web/云API,而SOAP适用于分布式计算场景。
REST的主要优点是带宽利用率高,因为没有复杂的文档要遍历(例如XML、SOAP头),这对于性能良好的Web API非常重要。 JSON是一种广泛认可和简单的数据交换标准,易于浏览器和客户端代码读取,这就是为什么大多数RESTful API(例如雅虎)提供JSON的原因。
更不用说REST可用于XmlHttpRequest对象,这对于Web API的AJAX非常重要。
当然,REST的可缓存特性也不能被忽视。由于REST基于HTTP,它可以利用HTTP数据包的许多语义(以及Web本身),通过在HTTP数据包的标头中使用(过期)来使浏览器进行缓存。还有像gzip压缩等方式可以提高效率。从性能方面来看,REST相对于SOAP表现得更好。
至于SOAP,它适用于有状态操作。WS*标准(安全性、事务等)处理在分布式情况下比较常见的此类底层功能。当然,REST也可以实现,但那就不是真正的REST了。 SOAP非常适合定义客户端和服务器之间的操作契约,这在分布式场景中至关重要。
因此,我的观点是(SOAP vs REST的问题高度主观),对于分布式计算场景使用SOAP,对于Web API使用REST。
GET list/some/url
。在服务器上解析它将比编写WSDL更容易,即使你必须手动编写代码。优势是战术性的 - 当然可以在另一个中做所有你可以在其中做的事情,但是Web服务器比SOAP先出现,并且相当容易配置,因此通常更简单。例如,身份验证等通常可以由Web服务器处理,重定向和负载平衡等也可以。普通的SOAP框架实际上没有完整的这些功能集,可能会导致成长痛苦。