REST几乎总是会更快。SOAP 的主要优点是,它为服务提供了一种机制,用于向客户端描述自己,并公布它们的存在。
REST更加轻量级,几乎可以使用任何工具实现,从而降低带宽和缩短学习曲线。但是,客户必须知道要发送什么以及要期待什么。
通常,当您向外部世界发布复杂或可能发生变化的 API 时,SOAP 将更有用。除此之外,REST通常是更好的选择。
REST 与 SOAP Web Services
我看到现在很多新的Web服务都是使用REST风格的架构而不是SOAP架构实现的。让我们退后一步,解释一下REST是什么。
什么是 REST Web 服务?
首字母缩略词REST代表表示状态传输,这基本上意味着每个唯一的URL都是某个对象的表示形式。您可以使用HTTP GET获取该对象的内容,以将其删除,然后可以使用POST,PUT或删除来修改该对象(实际上,大多数服务都使用POST)。
谁在使用 REST?
雅虎的所有网络服务都使用REST,包括Flickr和Delicious。
API使用它,pubsub,bloglines,Technorati,eBay和Amazon都有REST和SOAP的Web服务。
谁在使用 SOAP?
Google在实现他们的Web服务以使用SOAP时保持一致,除了Blogger,它使用XML-RPC。您还可以在许多企业软件中找到 SOAP Web 服务。
休息与肥皂
您可能已经注意到,我提到的使用REST API的公司已经存在了很长时间,他们的API大多是今年推出的。因此,如果创建Web服务可能很时髦,那么REST绝对是创建Web服务的时尚方式(让我们面对它,你用肥皂洗,当你累了的时候休息)。REST Web服务的主要优点是:
轻量级 - 没有很多额外的XML标记人类可读的结果
易于构建 - 无需工具包。SOAP 也有一些优点:
易于使用 - 有时是刚性 - 类型检查,遵循契约 开发工具 对于使用Web服务,它有时在两者之间折腾更容易。例如,Google的AdWords网络服务确实很难使用(无论如何在ColdFusion中),它使用SOAP标头以及许多其他使其变得困难的东西。相反,亚马逊的REST Web服务有时很难解析,因为它可能是高度嵌套的,并且结果架构可能会根据您搜索的内容而有很大差异。
无论您选择哪种架构,都要确保开发人员可以轻松访问它,并且有良好的文档记录。