用于Web服务的SOAP还是REST?

REST是做Web服务还是SOAP的更好方法? 或者他们是不同的问题的工具? 或者这是一个细微的问题 - 也就是说,在某些领域比另一个领域略胜一筹?

赏金编辑:

现在,差不多三年后,我想再次提出这个问题 - 提供一个奖励来鼓励一个深入的答案。 我特别感谢有关这些概念及其与PHP世界以及现代高端Web应用程序的关系的信息。


当我在惠普工作时,我制定了最初的SOAP服务器之一,包括代码生成和WSDL生成,这些服务器正在开发中。 我不建议使用SOAP做任何事情。

首字母缩略词“SOAP”是一个谎言。 它不是简单的,它不是面向对象的,它没有定义访问规则。 它可以说是一项议定书。 这是Don Box的最糟糕的规格,这真是一个壮举,因为他是犯下“COM”的人。

在SOAP中没有用REST进行传输,JSON,XML甚至纯文本用于数据表示的东西。 为了运输安全,您可以使用https。 对于身份验证,基本身份验证。 对于会话,有饼干。 REST版本将更简单,更清晰,运行更快,并使用更少的带宽。

XML-RPC明确地定义了请求,响应和错误协议,并且大多数语言都有很好的库。 但是,XML比许多任务所需的要重。


REST是一种体系结构,SOAP是一种协议。

这是第一个问题。

您可以在REST应用程序中发送SOAP信封。

SOAP本身实际上是非常基本和简单的,它的WSS- *标准使其非常复杂。

如果您的客户是其他应用程序和其他服务器,那么今天对SOAP协议有很多支持,而移动数据的基础实质上是在现代IDE中的鼠标点击。

如果您的客户更可能是RIA或Ajax客户端,那么您可能会希望比SOAP更简单,而且客户端更加本地化(特别是JSON)。

通过HTTP发送的JSON数据包不一定是REST架构,它只是向URL发送消息。 所有完全可行的,但有关键组件的REST成语。 然而,很容易混淆两者。 但仅仅因为你在谈论HTTP请求并不一定意味着你有一个REST架构。 你可以有一个没有HTTP的REST应用程序(介意,这很少见)。

因此,如果您的服务器和消费者对SOAP感到“舒服”,则SOAP和WSS堆栈可以很好地为您提供服务。 如果您正在做更多特别的事情,并希望更好地与Web浏览器进行交互,那么HTTP上的一些较轻的协议也可以很好地工作。


REST与SOAP有着根本不同的范例。 关于REST的一个很好的阅读可以在这里找到:我如何向我的妻子解释REST。

如果你没有时间阅读它,下面是简短的版本:REST通过关注“名词”和限制可应用于这些名词的“动词”的数量来进行范式转换。 唯一允许的动词是“get”,“put”,“post”和“delete”。 这不同于SOAP,许多不同的动词可以应用于许多不同的名词(即许多不同的功能)。

对于REST,这四个动词映射到相应的HTTP请求,而名词则由URL标识。 这使得状态管理比SOAP更透明,其中通常不清楚服务器上的状态和客户端上的状态。

在实践中,虽然大部分情况都会消失,REST通常只是指以JSON返回结果的简单HTTP请求,而SOAP则是通过传递XML来进行通信的更复杂的API。 两者都有其优点和缺点,但我发现以我的经验,REST通常是更好的选择,因为你很少需要从SOAP获得的全部功能。

链接地址: http://www.djcxy.com/p/12311.html

上一篇: SOAP or REST for Web Services?

下一篇: REST API Login Pattern