什么是WSDL,SOAP和REST?

问题描述:

什么是WSDL?它与SOAP有什么关系? REST适合所有这些?什么是WSDL,SOAP和REST?

+2

你在找什么样的“例子”?正如我所说,你可以得到一个“简单”的例子并不是一件简单的事情。 – 2010-09-21 22:11:46

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

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

REST是网络系统的体系结构风格,代表具象状态传输。它本身并不是一个标准,但确实使用了诸如HTTP,URL,XML等标准。

+3

我的意思是把SMTP或HTTP作为可用于SOAP的协议的示例。我并不打算这意味着HTTP是唯一可以使用的协议(只是将其用作示例)。 – 2010-09-21 22:10:28

+0

添加它,所有更好:-) – 2010-09-21 22:16:10

+4

具象状态传输(REST)是一种体系结构风格,它指定约束(如统一接口),如果应用于Web服务会导致所需的属性,如性能,可伸缩性和可修改性,使服务能够在Web上发挥最佳效果。在REST风格中,数据和功能被视为资源,并使用统一资源标识符(URI)进行访问。通过使用一组简单的,定义明确的操作来执行资源操作。它遵循客户端/服务器体系结构,旨在使用无状态通信协议(通常是HTTP)。 – kingAm 2015-06-03 12:20:13

SOAP代表简单(sic)对象访问协议。它旨在通过通过HTTP发送XML来实现对远程对象的远程过程调用。

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

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

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

+2

-1:对不起,但我不同意将SOAP与RPC关联。消息类服务呢?另外,没有标准说明以.wsdl结尾的请求或?wsdl将生成WSDL。 – 2010-09-21 21:44:16

+4

你是说你不能用SOAP做RPC?我知道这可能不包括整个标准,但它当然是最初的动机。至于WSDL URL是否是标准的一部分,我承认你有我。这通常是我看到它完成的方式,但我不能在标准中强调任何内容。 – duffymo 2010-09-21 22:50:32

+0

您可能一直在混淆SOAP是从XML-RPC派生出来的这一事实,以及SOAP最初打算用作RPC的想法。但请注意,从一开始,WSDL除了能够描述RPC风格的服务外,还能够描述文档风格的服务。如果RPC是SOAP和WSDL背后的最初动机,那么人们会认为原始标准中缺少文档样式的服务。 – 2011-07-23 22:35:54

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

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

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

REST根本与WSDL无关。

Wikipedia说:“Web服务描述语言是一种基于XML的语言,提供描述Web服务的模型。换句话说,WSDL是一个Web服务,因为javadoc是一个Java库。

虽然WSDL真的很甜蜜,但软件可以使用WSDL生成客户端和服务器。

+0

与javadoc比较帮助,欢呼声。 – Andrejs 2016-05-25 12:48:30

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

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

Difference between a SOAP message and a WSDL?

REST是重量轻的在编码方面,更加有用轻重量装置即非严格的API。

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

由于WSDL/SOAP交互是多点消息交互,因此REST为2点消息传输提供了能力(因为REST代表了REpresentational State Transfer,这并不令人意外)。

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

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

一个简单的比喻:REST就像一个motoboy,让您的食物轻松快捷。 XML扩展WSDL/SOAP更像UPS的交付,更结构化和严肃的东西,但带来了成本。

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

WSDL:WSDL讲述了您可以实现或向客户端公开的功能。例如:添加,删除,减去等。 SOAP:在使用SOAP时,您实际执行doDelete(),doSubtract(),doAdd()等操作。所以SOAP和WSDL是苹果和桔子。我们不应该比较它们。他们都有自己的不同功能。

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

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

WSDL:当我们去餐厅吃饭,我们看到的菜单项,这些都是WSDL的。

代理类:现在看到的菜单项后,我们使我们的心灵(过程我们对什么菜记):所以,基本上我们根据WSDL文档代理类。

SOAP:然后,当我们根据菜单的实际命令食物:意义我们使用代理类来调用使用SOAP完成的服务方法。 :)

+0

喜欢这个答案! – realnsleo 2018-01-26 14:06:34

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

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定位资源并根据传输动作动词执行动作。它更多是基于建筑风格和惯例。

WSDL文档描述了一个web服务。它指定服务的位置和所述服务的使用这些主要元素的方法:使用在每个操作 web服务 数据元素 数据类型描述可以执行并且消息envolved

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