2007 年 6 月 27 日,WSDL 2.0 最终被批准成为万维网联盟(W3C)官方推荐。 Web 服务描述工作组已在这些标准上工作超过了 6 年。该推荐预定于 2006 年 12 月 31 日到期,但是后来又得以延期至今年的 6 月 30 号。
关于 WSDL 2.0 是 WSDL 1.1(目前事实上的标准)期待已久的后续改进,还是根本就没有关联,已有太多的争论。就这一问题, Mark Little 已在 InfoQ 上发表了一篇内容广泛的新闻。WSDL 从 1.1 到 2.0 主要的变化:
- WSDL 组件的命名变化,如 portType 已被改名为 interface。
- 移除消息结构
- 支持额外的消息交换模式
- 支持除 XML 模式之外的其余类型系统
- HTTP 绑定,它支持 POX(Plain Old XML)/ REST 风格的服务
文章“ WSDL 2.0:务实分析和互操作框架”给出了最新的变化概览,并讨论了 WSDL 1.1 与 2.0 之间互操作性问题:
采用 WSDL 2.0 将导致与已有 WSDL 1.1 实现的互操作性问题。大多数 Web 服务实现在生产者和消费者两端都是基于 WSDL 1.1 的。采用新标准会引起两种互操作性问题。第一,通过 WSDL 2.0 规范暴露已托管服务的相关问题;第二,客户端使用基于 WSDL 2.0 规范消费服务的相关问题。
Eran Chinthaka ( Apache Axis2 项目的先驱成员),在他的文章“使用 Web 服务赋予 REST 能力,部分 1:WSDL 2.0 中的 REST 和 Web 服务”中,检验了 WSDL 2.0 对于 POX/REST 风格服务的支持:
WSDL 2.0 HTTP 绑定的动机是允许服务拥有 SOAP 和 HTTP 两种绑定。服务实现解决应用数据(它们经常被描述成为 XML 元素)的处理,服务并不知道那些数据进到了 SOAP 信封、HTTP GET、还是 HTTP POST 里。WSDL 2.0 HTTP 绑定允许你将服务暴露为一个可被 HTTP 方法调用的资源。同时,你需要明白 HTTP 绑定并不能使你实现全部 REST 风格的系统。这经常被许多人争论,并且它完全依赖于你对 REST 可以交付的东西有多相信。
尽管文章的标题预示了 WSDL 2.0 对 REST 的支持,但是至少从摘要中显示作者所在意的 WSDL 2.0 支持是 POX over HTTP,而非 REST。关键点是 WSDL 是以单一 URI 为中心的,提供任意数目操作的是服务。而 REST 恰恰是反其道而行之。
WSDL 2.0 可能提供一些有趣的变化。然而看看 SOAP 的历史,在不久的将来,WSDL 2.0 成为主流的可能性不高。SOAP 1.1 提交后的 3 年,即 2003 年 6 月,SOAP 1.2 就已经达到推荐状态,但是仍然未被广泛使用,有时甚至不支持。此外,只有很少产品仅仅实现了 WSDL 2.0,Apache Axis2 是其中之一。根据以往的经验判断,WSDL 2.0 还要很长的路要走。你认为呢?
评论