3

我看到多个问题询问 Web 服务本身的开发中哪个更好,SOAP 或 REST。但是,从客户的角度来看,关于利弊的讨论并不多。如果您要编写一个应用程序并在两种 Web 服务 API 之间进行选择,它们在各方面都相似,除了一个是 SOAP,另一个是 REST,您会选择哪个,为什么?REST 具有允许 XML 或 JSON 的额外好处,两者之间还有其他主要区别吗?

4

2 回答 2

6

哇,10 个小时,到目前为止还没有答案。通常这些类型的问题会在瞬间跳出来。

无论如何,这里对你的问题有点奇怪的答案。选择应该取决于几件事:

  1. 这两个 API 的文档有多好。
  2. API 更改的可能性有多大。
  3. 我需要多少时间来生产客户
  4. 客户端可能使用多长时间。
  5. REST api 文档是否包含 URL 列表以及它们返回的 XML/JSON?

无论哪个 API 有更好的文档,都可能是更好用的 API。这不能保证,但它是一个很好的指标。如果实现是垃圾,那么无论 SOAP 是否比 REST 更好,反之亦然,无论哪种方式,您都会受到影响。

如果这是一个由初创公司创建的全新 API,它可能会在明年显着发展,那么 REST API 可能会更容易管理。SOAP api 往往非常脆弱,并且由于生成的客户端代理代码需要频繁的客户端重新编译。

尽管我讨厌客户端生成的代理代码有 1001 个原因,但如果您需要让某些东西真正快速运行。将您最喜欢的 IDE 指向 WSDL 块将很快让您使用对象模型。这绝对是让某些东西工作的最快方法。

如果客户端将存在数年,那么我相信值得投入时间来生产一个好的 REST 客户端。基于 REST 的方法对随着时间的推移将发生的不可避免的变化更具弹性。与基于 SOAP 的版本相比,版本 REST 客户端还有更多选择。

最后一项是测试 REST API 是否是真正的 REST 接口的试金石。如果文档是 http 端点的目录,那么您可以确信设计人员不知道 REST 是什么,所以远离它。

于 2009-10-23T00:38:18.020 回答
6

你在做一个有缺陷的假设。

你说:

如果您要编写一个应用程序并在两个 Web 服务 API 之间进行选择,它们在各方面都相似,除了一个是 SOAP,另一个是 REST,您会选择哪个,为什么?

说实话,SOAP API 很可能与 REST 系统完全不同,因此您无法在这个级别上进行真正的比较。

REST 是一种架构,而不是一种协议。SOAP 是一种协议,但不是一种体系结构。虽然可能,但您不太可能在 SOAP 协议之上创建 REST 架构,因为 SOAP 有效负载不会为 REST 系统提供很多功能。

SOAP 系统更倾向于基于 RPC,REST 系统是基于资源的。这两者在操作上和设计上的差异是显着的。

至于在 HTTP 上使用 SOAP 与 XML/JSON(许多人错误地将其与 REST 混为一谈),SOAP 系统的主要好处是可用于使与系统的接口和从系统发布更容易的工具。

今天,许多 IDE 和服务器可以轻松发布和使用 SOAP Web 服务。

在 Java 中,发布 SOAP 接口可能比在文件中粘贴“@WebService”并部署它多一点。使用 Web 服务只不过是将 IDE 指向 WSDL(在发布 Web 服务时为您方便地创建),单击按钮,并让工具创建编组数据和与服务通信所需的代理。

基于 HTTP 的 XML/JSON 有一个好处,即您可能会跳过许多使 SOAP 自动化“容易”的样板。当然,Javascript 非常擅长使用 JSON,因此如果您的客户端空间包括 Web 浏览器,这可能是一个因素。

归结起来,如果您将浏览器与服务器对话,HTTP 上的 XML/JSON 工作得很好,实际的 REST 架构也可以工作得很好。

如果您谈论的是服务器之间的 RPC,那么 SOAP 更容易实现,因为现在有可用的工具。

于 2009-10-23T00:54:13.533 回答