【发布时间】:2011-01-18 03:33:25
【问题描述】:
Restful Web 服务与 SOAP 等其他 Web 服务有何不同?
【问题讨论】:
标签: rest
Restful Web 服务与 SOAP 等其他 Web 服务有何不同?
【问题讨论】:
标签: rest
关于 Web 服务的争论并不完整,但有一些突出的元素。
RESTful Web 服务是 Web 服务的“家族”。有些人会称之为架构。
RESTful Web 服务使用 HTTP 协议来执行来自 Web 服务的请求。他们使用 HTTP 动词:GET、POST、PUT 和 DELETE(有时还有其他)。请求本身是对代表资源的 URL... 有时请求将在正文中包含可能是 HTML、JSON、二进制数据或其他数据的数据。
纯粹的 RESTful Web 服务只需要 URL 和 HTTP 动词来描述请求的操作...主体数据通常是参与请求的操作的有效负载...它不应该指示请求的操作
另一方面,SOAP 实际上是一种协议。它通常通过 HTTP 传输,但 HTTP 请求只是将 SOAP 数据包获取到必要的处理程序的一种方法。 SOAP 请求的内容描述了客户端想要执行的操作。它包含所有必要的信息。
它们是实现 Web 服务的两种截然不同的方式。如果你问“哪个更好”这个问题,你可能会得到双方的强烈意见。我建议您进一步调查并做出自己的决定。
【讨论】:
RESTful Web 服务(也称为 RESTful Web API)是使用 HTTP 和 REST 原则实现的简单 Web 服务。可以将这样的 Web 服务视为资源的集合。这样一个Web服务的定义可以认为包括三个方面:
SOAP,最初定义为简单对象访问协议,是一种用于在计算机网络中实现 Web 服务时交换结构化信息的协议规范。它依赖可扩展标记语言 (XML) 作为其消息格式,并且通常依赖其他应用层协议(最显着的是远程过程调用 (RPC) 和 HTTP)来进行消息协商和传输。这个基于 XML 的协议由三部分组成:
参考:
顺便说一句,一个简单的谷歌搜索可以为你提供答案......
【讨论】:
好吧,在 Stack Overflow 上关于这个主题有丰富的知识。
我认为最能阐明 REST 精神以及如何将其与 SOAP 等技术进行比较的文章是 How I explained REST to my wife。
与 SOAP 不同,REST 不是一种标准,它更多的是一种以资源为中心的方法,以及您可以对资源执行的操作。 HTTP 动词 GET、POST、PUT 和 DELETE 是您可以对任何资源应用的典型操作。 SOAP 是一个忽略这些动词的标准,它发明了一种更全面的协议,该协议在最流行的动词 HTTP POST 之上工作,以实现最大的互操作性。大多数情况下,这种增加的复杂性是不必要的,对资源的简单 HTTP GET 请求通常足以超过可能 1KB+ 的 SOAP+XML 来获得等效结果。
您还可以查看Roy Fielding's blog(REST 的发明者)了解更多信息。
【讨论】:
RESTful 服务专注于速度和简单性,消除了许多 Web 服务所需的简单事务的 SOAP 开销。但是,以这种方式实现的服务非常特定于 HTTP,您将很难在该上下文之外使用它。
SOAP 服务提供了更多开箱即用的功能,其中最重要的(当然,恕我直言)是发现。能够在几乎任何开发环境中添加对 SOAP 服务的引用并让它自动生成一个代理类,该代理类将隐藏底层 HTTP 复杂性,甚至到序列化非平凡类型的程度,非常非常有用。
我觉得这两种 Web 服务开发方法各有千秋。对于不需要任何复杂的 AJAX 需求,我倾向于将其实现为 HTTP 处理程序 (ASP.NET)。任何需要从另一个应用程序或同一个应用程序中的多个位置调用的东西,我都将其实现为 SOAP 服务,因为它提供了协议封装,并且能够在没有 HTTP 开销的情况下调用使用底层对象有意义的地方。
【讨论】:
1) REST 比 SOAP 更简单易用 2) REST 使用 HTTP 协议来生成或使用 Web 服务,而 SOAP 使用 XML。 3) 与 SOAP 相比,REST 是轻量级的,是移动设备和 PDA 的首选。 4) REST 支持文本、JSON 和 XML 等不同格式,而 SOAP 仅支持 XML。 5) 可以缓存 REST Web 服务调用以提高性能。
【讨论】: