普通Web服务和基于SOAP的Web服务有什么区别?

6

据我所知,现在有两种类型的 web 服务。第一种是自定义的 XML 格式消息,第二种是 SOAP 标准的 XML 消息。它们之间有什么区别?哪一种更好呢?这两种方法各有什么优缺点呢?


我认为以下两个链接可能会对您有所帮助。 http://www.eggheadcafe.com/community/xml/4/82443/difference-between-xml-and-soap.aspx https://dev59.com/ZnVD5IYBdhLWcg3wHn2d - Arpi Patel
3个回答

27

通过“普通”,我假设你是指RESTful服务。这个讨论会很长,所以我会试着给你一些关键点:

  1. RESTful服务是最常用的Web服务类型。它们与HTTP的功能和原则密切相关,并且可以像使用GET请求一样简单地访问(其他操作为POST、DELETE和PUT)。核心概念是由URI标识的“资源”。REST的常见格式为XML和JSON。这是一种相当直接和易于使用的技术,这就使其如此广泛。

  2. SOAP web服务基于XML,大多数遵循RPC-style的应用程序设计(在服务器上调用远程方法并获得响应),并使用3个主要支柱:

    • WSDL - Web Service Description Language - 用于描述可用操作、参数等方面的服务。
    • SOAP - Simple Object Access Protocol - 用于构造交互消息,以便实体(客户端、服务器)之间进行互动。
    • UDDI - Universal Description, Discovery and Integration - 用于将可用的Web服务分类和发布到存储库,并使潜在用户能够发现。

SOAP Web服务倾向于具有高开销,并且通常具有非常冗长的消息,但如果您需要在应用程序中实现更复杂的功能和交互,则可能很好。


1
希望我能投多次赞。这实际上是所有答案中最好的一个。 - Dienekes

11
严格来说,只有 SOAP 服务才是 Web 服务。它们基于由 W3C 和 Oasis 标准化的WS-*规范。有时也称为 Web 服务的 POX 端点(Plain old XML)或 REST 端点,允许您通过 HTTP GET 获得原始 XML。
SOAP 服务通过 wsdl 端点(通常将 ?wsdl 附加到服务端点)以形式携带其模式,因此有很多工具可以创建代理对象并隐藏 Web 服务调用的复杂性。对于 POX 服务,您需要知道要使用哪个模式,例如文档中的模式。
SOAP 服务在 SOAP 包裹中携带有效载荷(带有标题和正文的 XML 模式,有效载荷在正文中)。独立于有效载荷的标头允许重新路由内容、签名和加密、认证等,而无需了解内容。但是,您需要在消息本身上支付额外的开销。
另一方面,POX 将所有这些留给 Web 服务器,并通常依赖于 HTTP 进行身份验证和压缩。加密和签名必须由您的系统完成。它的开销低,但发现性也低。
什么最适合您取决于您的情况。如果您在 .Net 或 Java World 中工作,通常最简单的方法是创建代理并使用它作为远程对象与 Web 服务一起工作。您将获得一个良好的基础设施和舒适的编程体验。如果您的环境不支持代理生成,或者需要从任何地方调用它,POX 可能是更轻量级的方式。

5
“Web Service”是一个更抽象和通用的概念。我们可以说,在网站上提供的任何东西都是Web服务。SOAP Web服务或RESTful服务是特殊类型的Web服务,它们有广泛的认可并拥有自己的标准。虽然SOAP服务是基于新的基于XML的标准构建的,但RESTful方法利用现有的HTTP方法,因此更为广泛地被接受(根据我的经验)。

这里给出的链接中没有紧凑比较。 - user146043
看起来链接已经失效了,管理员删除了该页面。我删掉了那句提到这个失效页面的话。 - anilsinaci

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接