WSDL 与 Web Service

更新日期: 2017-05-18 阅读次数: 11073 分类: Java

什么是 WSDL

Web Services Description Language,即Web服务描述语言。采用 XML 格式。

现存四个版本

  • 1.0:2000年
  • 1.1:2001年,依然是目前应用最广泛的版本
  • 1.2:2003年,即后来的2.0
  • 2.0:2007年,虽然更加灵活,但是没有被广泛应用

WSDL 就是一个 XML 格式的文档文件,用于描述

  • 服务 URL 和命名空间
  • 网络服务的类型 (可能是 SOAP 的函数调用,但我说过,WSDL 足够自如地去描述网络服务的广泛内容)
  • 有效函数列表
  • 每个函数的参数
  • 每个参数的类型
  • 每个函数的返回值及其数据类型

它的目的是让你知道该如何使用该服务,包括调用的各种细节信息。WSDL 文档通常用来辅助生成服务器和客户端代码及配置信息。

所以 WSDL 可以被看作是一种规范的接口文档。而不是一个具体的接口的实现。

一个真实的 WSDL 案例,亚马逊 AWS Product Advertising API WSDL Location - Product Advertising API

WSDL 与 Web Service 的关系

WSDL 是 Web Service 三要素的其中之一。

Web Service 包含

  • SOAP(Simple Object Access Protocol) 简单对象访问协议。基于 XML 的协议格式。
  • WSDL(Web Services Description Language) 网络服务描述语言;
  • UDDI(Universal Description Discovery and Integration)一个用来发布和搜索 WEB 服务的协议(非必须);

是否有工具可以辅助生成 WSDL 文件

Web Service 分两种开发模式

  • Contract First。契约先行,即先定义好 WSDL 文件。
  • Code First。先写具体的接口实现,然后通过工具生成 WSDL 文件,或者手工整理。

我觉得,Contract First 的模式更实用一些。因为,会采用 WSDL 的项目,一定是比较正式的项目,调用方与被调用方一定是经过了漫长的需求讨论,才进行到接口定义这一步的。所以,不可能先写代码,后生成 WSDL 文件。

我的疑惑是,如果是手写 XML 格式的 WSDL 文件,会不会太繁琐。几个疑问

  • Eclipse 写 xml 有自动补全功能么?
  • 是否有在线的工具提供 WSDL 模板,引导性的编辑。Eclipse 是否也有此功能?

Eclipse - Version: Neon.3 Release (4.6.3) 内置的 WSDL 编辑器远比我想象的强大。参考链接 Introduction to the WSDL Editor - Eclipsepedia

实际上不需要手写,可以通过 XML -> XSD -> WSDL 的方式自动生成。WSDL 编辑器主要是做语法检测之用。

参考

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式