每个服务的传入参数是不同的。例如,在线订单服务,其中传入的参数是一个新的订单(即订单放置服务),也可能是订单的数量(即订单查询服务)。那么外部系统如何知道这些服务的接口数据呢?一种解决方案是由服务提供者提供服务语句,外部系统根据该语句写入数据请求信息,并期望某种类型的数据返回;另一种情况是在公共地方(如服务总线)拥有一段服务注册和查询功能。在外部系统中,有一个服务查询模块。模块在服务总线上查询服务,服务总线返回服务名称、调用参数等信息。然后,外部系统使用这些信息来调用相应的服务。后者使用WSDL来描述云服务。我们建议使用WSDL作为服务的描述语言,因为云服务以标准Web服务为目标,而Web服务需要使用WSDL进行描述。
(一)什么是WSDL
WSDL是一种广泛使用的服务描述语言。它包含以下信息,以便服务请求者能够调用特定的服务:
·服务名称;
·请求消息格式;
·响应消息格式;
·在哪里发送服务请求消息。
WSDL没有描述实现细节。服务请求者不知道或不关心服务是用哪种编程语言编写的,例如Java代码、C#、.NET等。WSDL基于XML,因此WSDL文档是计算机可读的。
许多开发工具可以根据WSDL自动生成请求者来调用此服务。例如,开发人员可以在某些Java开发工具中导入WSDL描述,该工具会自动为Java生成代理类,从而完成请求的创建和响应消息的解析。无论所提供的服务是否用Java编写,生成的Java代理类都可以从WSDL描述中调用任何Web服务。对于使用Microsoft平台的系统,开发人员可以使用Microsoft.NET中的WSDL.exe来生成代理类。对于使用Apache Axis或IBMWeb Sphere的系统,可以使用WSDL 2 Java.exe生成Java代理类。基于这些代理类,可以进一步开发客户机(即服务请求者使用的系统)。
(二)WSDL文档结构
正如上面所提到的,WSDL是一种基于XML的语言,它描述Web服务,包括如何访问Web服务、服务提供的操作(或方法)等等。使用WSDL描述的服务信息可以存储在UDDI注册中。
·WSDL端口(port Type)(www.xing528.com)
<port Type>元素是最重要的WSDL元素。它描述了一个Web服务可被执行的操作,以及相关的输入输出数据。读者可以把<port Type>元素比作传统编程语言中的一个函数库(一个模块、一个类)。
·WSDL消息(Message)
<message>元素定义一个操作的数据元素。每个消息均由一个或多个部件(part)组成。可以把这些部件比作传统编程语言中一个函数调用的参数。
·WSDL类型(Types)
<types>元素定义Web服务所使用的数据类型。为了最大程度的保持平台中立性,WSDL使用XML Schema语法来定义数据类型。
·WSDL绑定(Bindings)
<bindings>元素为每个端口定义消息格式和协议细节。
WSDL文档还可包含其他的元素,比如extension元素、service元素(该元素可把若干个Web services的定义组合在一个WSDL文档中)。
(三)创建WSDL服务
创建Web服务有两种方法:一种是自上而下的方法,另一种是自下而上的方法。如果已经有了一个实现该服务的Java类,可以采取自下而上的方法;如果想要创建一个新的服务,并且没有任何实现代码,可以自顶向下的方式创建Web服务的wsdl文件。许多开发工具提供了从WSDL生成Java类以创建新Web服务的能力。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。