我很难理解为什么 WSDL 会如此有益,而事实是服务定义不是那么可读,并且大多数开发人员将使用自动化工具来使用它以在应用程序中生成对象。为什么服务提供商不能更容易地定义一个简单的 XML 模式,并在文档中告诉我我可以获得什么以及如何获得它?我了解整个“通用定义”方面,但这一切对我来说似乎过于复杂。大多数用于社交网站的 API 都使用基本的 RESTful 架构,它们所做的只是为您提供将要返回的数据的模式表示。说真的,我一定在这里遗漏了一些东西。
6 回答
曾经,WSDL 很流行,我确信对于许多公司(以及大型 SOA 系统)的内部工具,WSDL 仍在使用中。但是你是对的,一旦 WSDL “出现”,REST 的采用已经让 WSDL 脱离了地图。
以亚马逊 S3 为例。他们提供 WSDL 和 REST API。我在某处读到过,98% 的 S3 用户正在使用 REST API,而亚马逊正在考虑放弃对 WSDL 的支持。
REST 是干净的。WSDL 通常依赖于其他工具来解析它,或者为您的应用程序自动构建函数以从 WSDL 提供的服务中受益。REST 还具有通过利用 HTTP 而不再真正依赖任何东西而更加自然的好处。如果您将 SOAP 和与 WSDL 一起使用的许多其他首字母缩略词混在一起,您最终会得到很多东西......
那么,您会提出什么样的“简单 XML 模式”来让工具提供与现在相同级别的代码生成支持呢?
我认为 WSDL 设计者会争辩说,他们已经给出了他们所能提供的最简单的模式,这暴露了他们需要的一切。我并不是说我一定会同意,但是能够自动生成客户端是非常强大的。
对我来说,WSDL 似乎是另一个过度设计的“洋葱架构”的例子,就像原始的 Java EJB 一样。很多层次和眼泪。
一方面,WSDL 是自动化工具用来生成对象的东西。它已经是一种非常简单的 XML 格式,但我开始相信,让编写 XML 变得容易的工具永远不会存在。我认为没有人说它是比 REST 更好的协议,但它首先问世,具有强大的工具支持(Visual Studio 在创建和使用服务时完全抽象出来),而且它是一个标准,因此它可能会继续流行一会儿。
WSDL 是 XML 表示文件和任何外部系统与您的 Web 服务通信的通信标准,无论其实现技术或平台。仅供参考,RESTful 服务也可以使用称为 WADL 的定义语言文件来描述服务。因此,这不仅仅是关于 Web 服务。
这个链接应该可以帮助你。
http://www.prescod.net/rest/rest_vs_soap_overview/
这是一个很好的资源,可以帮助那些不了解 SOAP 与 REST 争论的人。它们是不同的工具。使用它们,以便您以最有效的方式解决问题。