什么是WSDL,SOAP和REST?

jav*_*guy 138 rest soap wsdl web-services

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

kei*_*h_c 164

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

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

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

  • "WSDL是一个描述Web服务的XML文档.它实际上代表Web服务定义语言."这实际上并没有解释它是什么...... (8认同)
  • Representational State Transfer(REST)是一种体系结构样式,它指定约束(例如统一接口),如果应用于Web服务,则会引入所需的属性(如性能,可伸缩性和可修改性),从而使服务在Web上运行最佳.在REST样式中,数据和功能被视为资源,并使用统一资源标识符(URI)进行访问.通过使用一组简单,定义明确的操作来执行资源.它遵循客户端/服务器体系结构,旨在使用无状态通信协议,通常是HTTP. (6认同)
  • 我打算将SMTP或HTTP作为可以使用SOAP的协议的示例.我并不打算这意味着HTTP是唯一可以使用的协议(仅使用它作为示例). (4认同)
  • WSDL中的'D'代表“ Description”而不是“ Definition”吗? (4认同)
  • @Sparkzz 根据维基百科:`WSDL 的当前版本是 WSDL 2.0。首字母缩略词的含义从 1.1 版开始发生变化,其中“D”代表“定义”。` (2认同)

Unb*_*ble 95

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

WSDL:WSDL讲述了您可以实现或向客户端公开的函数.例如:添加,删除,减去等.

SOAP:在使用SOAP的情况下,您实际执行doDelete(),doSubtract(),doAdd()等操作.所以SOAP和WSDL是苹果和橘子.我们不应该比较它们.它们都有自己不同的功能.

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

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

WSDL:当我们去餐馆时,我们看到菜单项,那些是WSDL的.

代理类:现在看到菜单项后,我们构成了我们的思维(处理我们的想法):基本上我们基于WSDL文档制作代理类.

SOAP:然后,当我们基于Menu的命令实际订购食物时:意思是我们使用代理类来调用使用SOAP完成的服务方法.:)


ang*_*net 37

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


Raj*_*pan 17

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

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

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


Joh*_*ers 13

你不会"简单地"理解复杂的东西.

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

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

REST完全与WSDL无关.


duf*_*ymo 11

SOAP代表简单(原文如此)对象访问协议.它旨在通过HTTP发送XML来对远程对象执行远程过程调用.

WSDL是Web服务描述语言.以".wsdl"结尾到端点的请求将生成描述用户可以预期的请求和响应的XML消息.它描述了服务和客户之间的契约.

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

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

  • 你是说你不能用SOAP做RPC?我知道这可能不包含整个标准,但它肯定是最初的动机.至于WSDL URL是否是标准的一部分,我承认你让我在那里.这通常是我看到它完成的方式,但我不能引用任何标准来强制它. (4认同)
  • -1:抱歉,但我不同意将SOAP与RPC相关联.消息式服务怎么样?此外,没有标准表示以.wsdl或?wsdl结尾的请求将生成WSDL. (2认同)

小智 6

维基百科说:"Web服务描述语言是一种基于XML的语言,它提供了一种描述Web服务的模型".换句话说,WSDL是一个Web服务,因为javadoc是一个java库.

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


Bed*_*mez 6

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

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

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

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

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

一个简单的比喻:休息就像摩托车男孩轻松快捷地为您提供食物。XML 扩展的 WSDL/SOAP 更像 UPS 交付,更加结构化和严肃的东西,但会带来成本。


小智 5

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

SOAP 消息和 WSDL 之间的区别?