什么是WSDL,SOAP和REST?


153

什么是WSDL?它与SOAP有什么关系?哪里REST适合于所有的呢?


2
您在寻找什么样的“例子”?正如我说的那样,您可以得到一个“简单”的示例,这并不是一件简单的事情。
约翰·桑德斯

Answers:


180

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

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

REST是网络系统的体系结构样式,代表代表状态转移。它本身不是标准,但确实使用HTTP,URL,XML等标准。


4
我的意思是将SMTP或HTTP作为可以使用SOAP的协议的示例。我并不打算用它来表示HTTP是唯一可以使用的协议(仅以它为例)。
keith_c 2010年

7
代表性状态转移(REST)是一种体系结构样式,用于指定约束(例如统一接口),如果将约束应用于统一的Web服务,则会产生所需的属性(例如性能,可伸缩性和可修改性),这些属性使服务能够在Web上最好地工作。在REST风格中,数据和功能被视为资源,可以使用统一资源标识符(URI)进行访问。通过使用一组简单的,定义明确的操作对资源进行操作。它遵循客户端/服务器体系结构,旨在使用无状态通信协议,通常为HTTP。
kingAm 2015年

4
WSDL中的'D'代表“ Description”而不是“ Definition”吗?
Sparkzz

11
"A WSDL is an XML document that describes a web service. It actually stands for Web Services Definition Language." 这真的并不能解释它是什么...
Ojonugwa Jude Ochalifu

2
根据维基百科@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".
Bochu

106

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

WSDL:WSDL告诉您可以实现或公开给客户端的功能。例如:加,删除,减等。

SOAP:与使用SOAP一样,您实际上会执行诸如doDelete(),doSubtract(),doAdd()之类的操作。因此,SOAP和WSDL是苹果和橙子。我们不应该将它们进行比较。它们都有各自不同的功能。

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

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

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

代理类:现在,在看到菜单项之后,我们就下定决心(处理定购事项):因此,基本上,我们基于WSDL Document来创建代理类。

SOAP:然后,当我们根据Menu的实际订购食物时:意味着我们使用代理类来调用使用SOAP完成的服务方法。:)


38

每当有人提到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


19

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

WSDL-> SOAP消息由SoapEnevelope-> SoapHeader和SoapBody组成。它没有定义什么是消息格式?它支持哪些传输(HTTP,JMS)?没有此信息,对于想要使用特定Web服务的任何客户端来说,构造SOAP消息都是很困难的。即使他们这样做,他们也不确定,它会一直工作。WSDL可以解决。WSDL(Web服务描述语言)定义了SOAP消息的操作,消息格式和传输详细信息。

REST-> REST(表示状态传输)基于传输。与以动作为目标的SOAP不同,REST更关注资源。REST通过使用URL(例如-http:// {serverAddress} / employees / employeeNumber / 12345)定位资源,并且该操作取决于传输协议(使用HTTP-GET,POST,PUT,DELETE等)。在资源上执行。REST服务根据URL定位资源,并根据传输动作动词执行动作。它更多地基于建筑风格和惯例。


16

您不会“简单地”理解一些复杂的东西。

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

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

REST根本与WSDL不相关。


11

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

WSDL是Web服务描述语言。对端点以'.wsdl'结尾的请求将导致一条XML消息,描述使用可能期望的请求和响应。它描述了服务与客户之间的合同。

REST使用HTTP将消息发送到服务。

SOAP是一种规范,REST是一种样式。


2
-1:对不起,但我不同意将SOAP与RPC关联。消息式服务呢?另外,没有标准说以.wsdl或?wsdl结尾的请求将生成WSDL。
约翰·桑德斯

4
您是说不能使用SOAP进行RPC吗?我知道这可能并不涵盖整个标准,但这当然是最初的动机。至于WSDL URL是否是标准的一部分,我承认您在那里。通常,这是我看到的方式,但是我不能引用强制性标准中的任何内容。
duffymo's

1
您可能已经混淆了SOAP是从XML-RPC派生而来的事实,即SOAP最初是作为RPC的。但是请注意,除了RPC样式服务之外,WSDL从一开始就能够描述文档样式的服务。如果RPC是SOAP和WSDL背后的原始动机,那么人们会希望原始标准中没有文档样式的服务。
约翰·桑德斯

6

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

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


4

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

REST是独立于格式的。XML,HTML,JSON所有选项均可用。

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

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

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

一个简单的比喻:REST就像是一个motoboy,可以轻松快捷地为您提供食物。XML扩展了WSDL / SOAP,更像是UPS交付,结构更复杂,内容更严格,但要付出一定的代价。



0

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.