【问题标题】:What are WSDL, SOAP and REST?什么是 WSDL、SOAP 和 REST?
【发布时间】:2011-04-15 10:44:41
【问题描述】:

WSDL 是什么?它与SOAP 有什么关系? REST 在哪里适合所有这些?

【问题讨论】:

    标签: web-services rest soap wsdl


    【解决方案1】:

    WSDL 是描述 Web 服务的 XML 文档。它实际上代表 Web 服务描述语言。

    SOAP 是一种基于 XML 的协议,可让您在应用程序之间通过特定协议(例如 HTTP 或 SMTP)交换信息。它代表简单对象访问协议,并使用 XML 作为其消息传递格式来传递信息。

    REST 是一种网络系统的架构风格,代表 Representational State Transfer。它本身不是标准,但确实使用了 HTTP、URL、XML 等标准。

    【讨论】:

    • 我的意思是将 SMTP 或 HTTP 作为可以使用 SOAP 的协议示例。我并不是说 HTTP 是唯一可以使用的协议(只是以它为例)。
    • 具象状态传输 (REST) 是一种架构风格,它指定约束,例如统一接口,如果将其应用于 Web 服务会产生所需的属性,例如性能、可伸缩性和可修改性,从而使服务在 Web 上工作得最好。在 REST 风格中,数据和功能被视为资源,并使用统一资源标识符 (URI) 进行访问。通过使用一组简单的、定义明确的操作对资源进行操作。它遵循客户端/服务器架构,旨在使用无状态通信协议,通常是 HTTP。
    • WSDL 中的“D”不是代表“描述”而不是“定义”吗?
    • "A WSDL is an XML document that describes a web service. It actually stands for Web Services Definition Language." 这还真不解释是什么……
    • @Sparkzz 根据维基百科:The current version of WSDL is WSDL 2.0. The meaning of the acronym has changed from version 1.1 where the "D" stood for "Definition".
    【解决方案2】:

    示例:简单来说,如果您有一个计算器的网络服务。

    WSDL:WSDL 讲述了您可以实现或向客户端公开的功能。例如:加、删、减等。

    SOAP:在使用 SOAP 时,您实际上执行了诸如 doDelete()、doSubtract()、doAdd() 之类的操作。所以 SOAP 和 WSDL 是苹果和橘子。我们不应该比较它们。它们都有自己不同的功能。

    我们为什么使用 SOAP 和 WSDL:用于独立于平台的数据交换。

    编辑:以正常的日常生活为例:

    WSDL:当我们去餐厅时,我们会看到菜单项,这些是 WSDL 的。

    代理类:现在,在看到菜单项之后,我们下定决心(处理我们的想法以订购什么):所以,基本上我们基于 WSDL 文档制作代理类。

    SOAP: 然后当我们根据菜单实际点餐时: 这意味着我们使用代理类来调用使用 SOAP 完成的服务方法。 :)

    【讨论】:

      【解决方案3】:

      每次有人提到 SOAP/WSDL,我都会想到 xml 中定义的对象和类...

      “您使用 SOAP 的方式与使用任何 PHP 类的方式相同。但是,在这种情况下,该类不存在于本地应用程序文件系统中,而是存在于通过 http 访问的远程站点中。”时间> ... “如果我们认为 SOAP 服务只是另一个 PHP 类,那么 WSDL 文档就是所有可用类方法和属性的列表。”

      http://www.doublehops.com/2009/07/07/quick-tutorial-on-getting-started-with-soap-in-php/comment-page-1/

      ..每当有人谈论 REST 时,我都会想到 HTTP 的命令(请求方法),例如 POST、GET 和 DELETE

      【讨论】:

        【解决方案4】:

        SOAP -> SOAP(简单对象访问协议)是为机器对机器交互创建的应用程序级协议。协议定义了标准规则。使用特定协议的所有各方都应遵守协议规则。与 TCP 一样,它在传输层展开,SOAP 协议将被应用层(任何支持 SOAP - Axis2、.Net 的应用程序)理解。

        WSDL -> SOAP 消息由 SoapEnevelope->SoapHeader 和 SoapBody 组成。它没有定义什么是消息格式?它支持的所有传输(HTTP,JMS)是什么?如果没有此信息,任何想要使用特定 Web 服务的客户端都很难构造 SOAP 消息。即使他们这样做,他们也不确定,它会一直有效。 WSDL 是救命稻草。 WSDL(Web 服务描述语言)定义了 SOAP 消息的操作、消息格式和传输细节。

        REST -> REST(Representational state transfer) 基于传输。与针对操作的 SOAP 不同,REST 更关注资源。 REST 通过使用 URL(例如 -http://{serverAddress}/employees/employeeNumber/12345)来定位资源,并且它依赖于传输协议(使用 HTTP - GET、POST、PUT、DELETE,...)来执行操作对资源执行。 REST 服务根据 URL 定位资源并根据传输操作动词执行操作。它更多地基于建筑风格和惯例。

        【讨论】:

          【解决方案5】:

          你不会“简单地”理解复杂的东西。

          WSDL 是一种基于 XML 的语言,用于描述 Web 服务。它描述了服务使用的消息、操作和网络传输信息。这些网络服务通常使用 SOAP,但也可能使用其他协议。

          WSDL 可由程序读取,因此可用于生成调用 Web 服务所需的全部或部分客户端代码。这就是将基于 SOAP 的 Web 服务称为“自描述”的意思。

          REST 与 WSDL 完全无关。

          【讨论】:

            【解决方案6】:

            SOAP 代表简单(原文如此)对象访问协议。它旨在成为一种通过 HTTP 发送 XML 来对远程对象进行远程过程调用的方法。

            WSDL 是 Web 服务描述语言。对端点的以“.wsdl”结尾的请求将产生描述用户期望的请求和响应的 XML 消息。它描述了服务和客户之间的合同。

            REST 使用 HTTP 向服务发送消息。

            SOAP 是一种规范,REST 是一种风格。

            【讨论】:

            • -1:抱歉,但我不同意将 SOAP 与 RPC 相关联。那么消息式服务呢?此外,没有标准规定以 .wsdl 或 ?wsdl 结尾的请求将生成 WSDL。
            • 你是说你不能用 SOAP 做 RPC 吗?我知道这可能不包括整个标准,但它肯定是最初的动机。至于 WSDL URL 是否是标准的一部分,我承认你有我。这通常是我看到它完成的方式,但我无法在标准中引用任何强制它的内容。
            • 您可能混淆了 SOAP 是从 XML-RPC 派生的事实与 SOAP 最初打算作为 RPC 的想法。但请注意,WSDL 从一开始就能够描述文档样式的服务,以及 RPC 样式的服务。如果 RPC 是 SOAP 和 WSDL 背后的原始动机,那么人们会期望原始标准中没有文档样式的服务。
            【解决方案7】:

            维基百科说“Web 服务描述语言是一种基于 XML 的语言,它提供了描述 Web 服务的模型”。换句话说,WSDL 对于 Web 服务,就像 javadoc 对于 Java 库一样。

            不过,WSDL 的真正好处在于,软件可以使用 WSDL 生成客户端和服务器。

            【讨论】:

              【解决方案8】:

              也可以在此处找到一些清晰的解释(针对 SOAP 和 WSDL)。

              Difference between a SOAP message and a WSDL?

              【讨论】:

                【解决方案9】:

                REST 在编码方面是轻量级的,对于轻量级设备(即非严格 API)更有用。

                REST 与格式无关。 XML、HTML、JSON 所有选项都可用。

                REST 提供了两点消息传输的能力(这并不奇怪,因为 REST 代表 REpresentational State Transfer),其中 WSDL/SOAP 交互是多点消息交互。

                REST 不需要 XML 消息的新扩展,而在 WSDL/SOAP 中就是这种情况。

                WSDL/SOAP 使用多种传输协议,REST 仅依赖于 HTTP。因此 WSDL/SOAP 可以像 RESTful 方式一样使用,但是简单的请求可能过于复杂/过于繁重。

                一个简单的类比:REST 就像一个摩托车男孩,可以轻松快捷地为您提供食物。 XML 扩展的 WSDL/SOAP 更像 UPS 交付,更结构化和更严肃的东西,但要付出一定的代价。

                【讨论】:

                  【解决方案10】:

                  一个 WSDL 文档描述了一个 Web 服务。它使用以下主要元素指定服务的位置和服务的方法: Web服务中使用的数据类型 每个操作的数据元素 描述可以执行的操作和涉及的消息

                  SOAP(简单对象访问协议)是一种消息传递协议,它允许在不同操作系统上运行的程序使用 http 和 xml 进行通信。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2013-04-01
                    • 2013-02-14
                    • 2014-06-24
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多