Wsdl文件读取方式

时间:2023-01-24 12:10:25

Wsdl文件读取方式

WSDL文档可以分为两部分。顶部分由抽象定义组成,而底部分则由具体描述组成。抽象部分以独立于平台和语言的方式定义SOAP消息,它们并不包含任何随机器或语言而变的元素。

WSDL文档包含下列元素

Types 

    抽象定义 ,独立与机器和语言的类型定义 

Messages 

包括函数参数(输入与输出分开)或文档描述 ,可以看做是对函数参数和输出结果的封装。输入参数以Request结尾,输出结果以Response结尾。Element中指向的是在 Types 中定义的

PortTypes 

引用消息部分中消息定义来描述函数签名(操作名、输入参数、输出参数)。  Operation中定义的是方法,input中定义的是输入参数,output中的是输出结果。message指向的是Messages 中定义的。例如

<wsdl:portType name="GateWayNewServicePortType">

<wsdl:operation name="queryPart">

<wsdl:input name="queryPartRequest" message="tns:queryPartRequest" />

<wsdl:output name="queryPartResponse" message="tns:queryPartResponse" />

</wsdl:operation>

</wsdl:portType>

 Bindings 

具体定义 ,PortTypes部分的每一操作在此绑定实现 , 可以有零个、一个或者多个<binding>元素. Binding中的operation元素定义的是方法名称,Binding的作用就是使每个定义的operation方法可以通过网络调用和回应。而在PortType中定义的operation只是和客户端的方法绑定,相当于java中的方法声明,Binding中的operation相当于实现。

Services 

确定每一绑定的端口地址,可以有零个、一个、多个<service>元素。它还包含了<port>元素,每个<port>元素引用一个Bindings栏里的<binding>元素.

各Messages栏使用Types栏的定义,PortTypes栏使用Messages栏的定义;Bindings栏引用了PortTypes栏,Services栏引用Bindings栏,PortTypes和Bindings栏包含了operation元素,而Services栏包含了port元素。PortTypes栏里的operation元素由Bindings栏里的operation元素进一步修改或描述。

正因为这种原因,读wsdl文档的时候,是从下往上读的。wsdl文档可以反向生成语言无关的客户端。