ChatGPT解决这个技术问题 Extra ChatGPT

什么是 WSDL、SOAP 和 REST?

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


S
Senura Dissanayake

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

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

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


我的意思是将 SMTP 或 HTTP 作为可以使用 SOAP 的协议示例。我并不是说 HTTP 是唯一可以使用的协议(只是以它为例)。
Representational State Transfer (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".
U
Unbreakable

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

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

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

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

编辑:在一个正常的日常生活示例中:

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

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

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


C
Community

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

“您使用 SOAP 的方式与使用任何 PHP 类的方式相同。但是,在这种情况下,该类不存在于本地应用程序文件系统中,而是存在于通过 http 访问的远程站点中。” ...“如果我们将 SOAP 服务视为只是另一个 PHP 类,那么 WSDL 文档就是所有可用类方法和属性的列表。” http://www.doublehops.com/2009/07/07/快速入门教程与soap-in-php/comment-page-1/

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


R
Raj kannan Iyyappan

SOAP -> SOAP(Simple object access protocal) 是为机器对机器交互创建的应用程序级协议。协议定义了标准规则。使用特定协议的所有各方都应遵守协议规则。与 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 定位资源并根据传输操作动词执行操作。它更多地基于建筑风格和惯例。


J
John Saunders

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

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

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

REST 根本与 WSDL 无关。


嗯,如果你也可以将它用于其他协议,为什么没有人用 WDSL 描述 REST-API?
d
duffymo

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 背后的原始动机,那么人们会期望原始标准中没有文档样式的服务。
M
Michael Burrows

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

然而,关于 WSDL 的真正美妙之处在于,软件可以使用 WSDL 生成客户端和服务器。


C
Community

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

Difference between a SOAP message and a WSDL?


B
Bedi Egilmez

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

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

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

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

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

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


F
Farzaneh

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

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