【问题标题】:What is the difference between ordinary web-service and soap-based web service?普通网络服务和基于肥皂的网络服务有什么区别?
【发布时间】:2012-01-28 11:51:56
【问题描述】:

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

【问题讨论】:

标签: web-services soap


【解决方案1】:

我认为“普通”是指 RESTful 服务。本次讨论会很长,所以我将尝试给您一些要点:

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

  2. SOAP Web 服务基于 XML,其中大部分遵循 RPC 风格的应用设计(调用服务器上的远程方法并获得响应),并使用 3 个主要支柱:

    • WSDL - Web 服务描述语言 - 用于根据可用操作、参数等来描述服务。
    • SOAP - 简单对象访问协议 - 用于构建相关实体(客户端、服务器)之间的交互消息。
    • UDDI - 通用描述、发现和集成 - 用于对可用 Web 服务进行分类并将其发布到存储库,并允许潜在用户进行发现。

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

【讨论】:

  • 希望我能多次投票。这实际上是最好的答案。
【解决方案2】:

“Web Service”是指一个更抽象、更笼统的概念。我们可以说任何可以在 Web 上提供服务的东西都是 Web 服务。 SOAP Web 服务或 RESTful 服务是一种特殊的 Web 服务,被广泛接受并有自己的标准。虽然 SOAP 服务是基于新的基于 XML 的标准构建的,但 RESTful 方法利用了现有的 HTTP 方法,因此得到了更广泛的接受(根据我的经验)。

【讨论】:

  • “[link given] 中有一个紧凑的比较”。不,没有!
  • 链接好像死了;版主删除了该页面。我删除了提到死页的那句话。
【解决方案3】:

严格来说,只有 Soap 服务是 Web 服务。它们基于 W3C 和 Oasis 标准化的 WS-* Specs。有时也称为 Web 服务,即所谓的 POX-Endpoint(Plain old XML)或 REST Endpoint,它允许您通过 HTTP GET 简单地获取原始 XML。

SOAP 服务以 wsdl 端点的形式携带它们的模式(通常将 ?wsdl 附加到服务端点),因此有很多工具可以创建代理对象并隐藏 Web 服务调用的复杂性。使用 POX 服务,您需要知道要使用哪个模式,例如文档。

SOAP 服务在 SOAP 信封内携带有效负载(带有标头和正文的 XML 模式,有效负载在正文中)。拥有独立于有效负载的标头允许在不知道内容的情况下重新路由内容、签名和加密、身份验证等。但是您需要为消息本身支付额外的开销。

另一方面,POX 将所有这些都留给了网络服务器,并且通常依赖 HTTP 进行身份验证和压缩。加密和签名必须由您的系统完成。它的开销很低,但可发现性也很低。

最适合您的方法在很大程度上取决于您的情况。如果您在 .Net 或 Java World 中工作,您通常会发现创建代理并使用它来将 Web 服务作为远程对象使用是最简单的。您将获得构建良好的基础架构和舒适的编程体验。如果您的环境不支持代理生成,或者必须从任何地方调用它,POX 可能是更轻量级的方法。

【讨论】:

    猜你喜欢
    • 2016-11-09
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 2017-01-16
    • 2017-12-10
    • 1970-01-01
    相关资源
    最近更新 更多