老实说,我真的没有得到Web Services与SOAP和REST共享的关系。
我对整个主题有一个非常简单的理解,Web服务是旨在促进网络上的机器到机器通信的软件。 Web服务具有机器理解的接口(WSDL)。其他系统使用SOAP消息与服务交互。
我对Web服务的理解在哪里滑落?
答案 0 :(得分:2)
非常简短地尝试答案 - 如果不这样做,请编辑您的问题或评论,以澄清您的要求。
SOAP基本上是一种协议,允许以独立于平台的方式执行RPC或通过传递单向文档(几乎不经常这样做)。它本质上是程序性的。你是正确的,WSDL是两个软件同意通信的接口的契约(我小心不要说'机器',因为你也可以在同一台机器上进行SOAP交互。
REST本身更像是我们应该如何公开和与“资源”进行交流的范例。我认为你所处理的一切都是在一个特定的URL上暴露的资源(或对象),它具有相同的方法...由HTTP协议建立的相同方法,基本上相当于一个CRUD界面。虽然没有建立合同,但对于带有SOAP的WSDL,这并不意味着REST'服务'没有接口......他们这样做。他们只是没有统一的方式为他们提供合同(也许WADL正在变得足够广泛)。
如果您对REST感到好奇,我强烈建议您阅读"RESTful WebServices" by Ruby and Richardson。
答案 1 :(得分:1)
网络服务
正如您所描述的,Web服务是用于机器到机器通信的软件。我只想补充一点,Web服务的主要目的之一是互操作性=跨平台通信。
<强> WSDL 强>
WSDL代表Web服务描述(或定义)语言。它是基于XML的语言,它描述了服务的接口(契约)。
<强> SOAP 强>
SOAP代表简单对象访问协议。它是用于机器到机器通信的标准化可互操作协议。在SOAP服务中,您可以开发一组方法,允许您远程执行代码。 WSDL的第一个版本只能描述SOAP服务。有多种类型的SOAP Web服务。多个可互操作标准(WS- *)为SOAP服务添加了额外的功能,如消息安全性,分布式事务,可靠消息传递等.SOAP可以在不同的传输协议上使用,但最常见的是SOAP over HTTP。
<强> REST 强>
REST代表Representational Entity State Transfer。 REST不是协议。这是发展方法/哲学。在REST服务中,您有一小组方法,您可以使用它们来处理URI标识的资源。这些方法最常见的是HTTP GET,POST,PUT和DELETE。 REST服务只能由WSDL 2.0来描述(问题是所有平台尚不支持WSDL 2.0)。由于REST服务的性质不同,因此不需要进行描述,并且大部分时间根本不使用。 REST服务仅用于HTTP协议。