1

伙计们,我最近浏览了涵盖基于 SOAP 的 Web 服务和 RESTful Web 服务的 Web 服务书籍。我不确定应该选择哪些参数,因为它们看起来很相似(即使从开发人员的角度来看)。这是我的观点

在 SOAP Web 服务中,我们使用从 Web 服务生成的 WSDL 文件,然后基于该文件创建客户端存根。

我的理解是内部存根也将使用 HTTP 协议与远程 java web 服务进行通信。正确的?

HTTP 请求/响应正文中会有 SOAP 消息(XML 消息)。因此,在基于 REST 的 Web 服务中,再深入一层,HTTP 请求本身表现为消息。这里我们有 WADL 而不是 WSDL。在这里,我们也可以基于 WADL 创建存根。所以除了消费者连接到生产者的一些技术差异以及如何处理请求/响应之外,每件事看起来或多或少都是相同的。所以根据我的理解,从开发人员的角度来看,基于 b/w 休息和基于肥皂的 web 服务没有太大区别(开发人员的工作量几乎相同)。

我的理解正确吗?

是的,可能在幕后,可能 SOAP 比 REST Web 服务更复杂,因为在 SOAP 中,消息中有消息(SOAP 消息嵌入在 HTTP 请求中),但在基于 REST 的服务中,HTTP 请求本身作为消息工作。

4

3 回答 3

3

SOAP 和 REST 旨在解决一组相同的问题,即以最简单的方式促进异构应用程序之间的交互。现在是选择 REST 还是 SOAP 并不仅仅取决于开发工作量。您还应该考虑以下一些因素,

  1. 要在应用程序之间交换的数据类型,无论是简单的对象(如名称值对)还是非常复杂的模式(或一些二进制数据)。
  2. 您的服务的消费者例如,当您开发RIA时,REST 更适合。
  3. 安全要求。SOAP 凭借标准驱动,提供了非常细粒度级别的安全方面调整。您可以在一定程度上对 SOAP xml 消息的各个元素进行编码。这些类型的事情在 REST 中是不可能的(至少现在是这样)。
  4. 如今,像JSON这样的符号在轻量级数据交换中非常流行,许多 REST 服务框架非常容易开箱即用地提供这一点。
  5. 从技术上讲,您不需要任何框架等来创建 REST Web 服务。我知道 WADL 等最近引入了标准化元素,但 REST 甚至在 WADL 出现之前就已经存在。REST 并不是什么新鲜事,它是 Web 的工作方式。REST 框架使它变得非常容易。

SOAP 是由标准驱动的,因此在使用它们时需要遵守更多的约束。因此,如果您的用例很简单(这是非常主观的),请选择 REST。

于 2013-07-16T07:26:05.443 回答
1

这是开发 Web 服务的两种不同方式……关于它们的差异(和优势)有很多讨论。

SOAP Web 服务远不止您所指的要点,实际上有一个完整的“堆栈”(WS-*)旨在标准化设计和实现此类 Web 服务的方法。这对某些系统来说很好,但对其他系统来说“太多”而且很重。在幕后 HTTP 是一种流行的“传输”消息的方式,但它不是唯一的,它们可以通过其他协议实现。在 SOAP 中,您严重依赖“WSDL”规范,该规范确实可用于“生成”服务器和客户端代码。在这些规范中,您非常关注“操作”,即在 Web 服务上要做的事情。

另一方面,在 REST 上,我们更多地考虑“资源”(由给定的 URI 描述),然后在它之上我们执行 HTTP 操作。尽管存在 WADL,但在 SOAP Web 服务中没有那么多规范的概念。实际上有一个很大的不同,人们并没有考虑太多(但实际上是 REST 原则核心的一部分),即在 REST 中你有所谓的“超链接”,其目的是允许客户端-服务器进行通信“状态”(下一步要去哪里),它在 SOAP Web 服务中不是那么“动态地”处理的。

底线,对于开发人员的观点:SOAP 确实有很多好的工具(例如:所有 Eclipse Web 服务工具),但是它往往有点麻烦并且有很多“代码”。REST 开发通常更干净、更简单。我确实认为这两种解决方案都可以用作您正在处理的情况的功能,您不应该“选择一个”。例如,如果您有一个巨大的企业应用程序,有很多部分和相互依赖关系、事务处理等,那么带有 WSDL(合同)的 SOAP Web 服务可能是要走的路。另一方面,如果您将一个 Web 服务(或 API)暴露给客户端,并且没有很多相互依赖关系,那么 REST 可能是最有趣的(您可以在过去 5 年左右的变化中看到这一点,所有主要的 Web APIS - 谷歌、推特等,

于 2013-07-16T06:50:17.507 回答
0

没有太大的区别(尤其是从开发人员的角度来看)。

唯一真正的区别是 SOAP 是根据 WS-* 建议进行标准化的。此外,在 SOAP 中,还可以根据标准创建事务并保护消息本身。因此,对于互操作性,SOAP 具有基于此的优势。

于 2013-07-16T06:28:42.357 回答