WSDL在Web Service中的意义和作用

1.   WSDL

a)        原理:从XML-RPCSOAP的使用我们可以看到,请求消息都是根据服务提供方的服务接口来生成一个HTTP请求,在请求当中封装所要调用的方法,以及方法调用时的参数。

客户端服务调用代码要完成的任务,也就是使用实现所提供的接口,来声明调用方所需要的方法名及参数,然后由实现根据用户的输入来组合HTTP请求。

这个过程可以这样来描述,首先获取用户输入,然后把输入变成实现所要求的存储格式,然后再把该格式变成HTTP请求。一般情况下,我们需要手工完成到第二步,但是,这个过程显然是可以把他自动化的,自动化的效果就是用户不再需要书写这部分的代码,减少工作量和降低出错几率。

自动化的过程就需要WSDL的参与,他提供了服务方服务的描述,调用方根据这个描述,就可以知道服务所需要的参数个数,然后向用户索取。得到输入以后,实现可以根据WSDL的要求来把输入转换成特定的存储格式,或者直接生成最后的HTTP请求。

对于每个服务,WSDL需要描述两部分的内容,一是接口,二是实现。接口描述了服务的格式,例如服务名,服务参数,服务结果。服务实现则描述了,用户所对应提供的输入如何转换成符合某一实现协议的形式,一般情况下,我们使用SOAP作为实现协议,那么客户端在分析了WSDL文件以后,将会把用户的输入转换成我们已经看到过的SOAP请求,之后的过程就与之前的完全一样。

 

2.   WSDL实例

a)        导言部分:指定了下文将要使用的数据类型和消息类型。

<?xml version="1.0" encoding="UTF-8"?>

<wsdl:definitions name="HelloWorldDescription"

targetNamespace="urn:HelloWorld" xmlns:tns="urn:HelloWorld"

xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/

xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

<wsdl:message name="sayHello_IN">

<part name="name" type="xsd:string" />

</wsdl:message>

<wsdl:message name="sayHello_Out">

<part name="greeting" type="xsd:string" />

</wsdl:message>

 

b)        服务接口:描述了方法名,和输入输出参数。

<wsdl:portType name="HelloWorldInterface">

<wsdl:operation name="sayHello">

<wsdl:input message="tns:sayHello_IN" />

<wsdl:output message="tns:sayHello_OUT" />

</wsdl:operation>

</wsdl:portType>

 

c)        服务实现:描述了某一个服务接口如何转换为SOAP请求。

<wsdl:binding name="HelloWorldBinding" type="tns:HelloWorldInterface">

<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="sayHello">

<soap:operation soapAction="urn:Hello" />

<wsdl:input>

<soap:body use="encoded" namespace="urn:Hello"

encodingStyle=http://schemas.xmlsoap.org/soap/encoding//>

</wsdl:input>

<wsdl:output>

<soap:body use="encoded" namespace="urn:Hello"

encodingStyle=http://schemas.xmlsoap.org/soap/encoding//>

</wsdl:output>

</wsdl:operation>

</wsdl:binding>

d)        服务位置:指定了SOAP请求所要发送的目的地。

<wsdl:service name="HelloWorldService">

<wsdl:port name="HelloWorldPort" binding="tns:HelloWorldBinding">

<soap:address location="http://localhost:8080" />

</wsdl:port>

</wsdl:service>

</wsdl:definitions>
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值