`

WSDL详解

阅读更多
Web service 一个wsdl对应一个web service地址,可以想象成一个商店,商店里面出售很多手机(portTypes),每个手机上有很多功能(opeations),每个功能对应很多输入和输出参数(message)

//这里没有类,只有端口。。。没有方法,只有端口里面的操作,没有参数,只有传递给端口中某个操作的消息

<wsdl:portType name="CaclSOA">
  <wsdl:operation name="add" parameterOrder="a b">
  <wsdl:input message="impl:addRequest" name="addRequest" /> 
  <wsdl:output message="impl:addResponse" name="addResponse" /> 
  </wsdl:operation>
</wsdl:portType>
上面这个东东是说端口类型是一个CaclSOA这样的类,这个类里面有一个方法 add,这个方法需要两个参数a ,b ...对于这两个参数输入参数在addRequest中定义,输出参数在addResponse中定义
因为我们把同一种类的(多个opeation)服务放到一个端口中暴露出去,那么portType很形象的描述了这个端口的作用,比如上面的名叫CaclSOA的端口类型只提供了一种操作就是add操作,我们可以把它想象成一个手机,手机的种类很多,但是每种手机都提供了不同的操作,我们买手机就是要得到手机的服务

<wsdl:message name="addResponse">
  <wsdl:part element="impl:addReturn" name="addReturn" /> 
  </wsdl:message>
<wsdl:message name="addRequest">
  <wsdl:part element="tns1:a" name="a" /> 
  <wsdl:part element="tns1:b" name="b" /> 
</wsdl:message>

addResponse是add方法的返回参数或者叫输出参数,因为估计是原始类型,他没写太清楚


 <wsdl:binding name="MyFirstWebServiceSoapBinding" type="impl:CaclSOA">每个被支持的信息格式和信息传送方式组合,就叫做 binding
就是如果你要和商店里的服务员沟通,那么你们必须规定好用什么语言沟通,binging就是把某个服务员(比如销售nokia的服务员)和某种语言绑定wsdlsoap:binding 就是用 soap语言通话


 <wsdl:service name="CaclSOAService">说明这个服务在哪个地方寻找到。。。或者在最开始的地方看也可以啦。。。。。//注意 web服务的地址也是命名空间的所在哦。。。所以一般QName上面要填写这个地址的啦。。。。server-config.wsdd中不写命名空间,那么假定的命名空间就是服务地址,但是可以在这个里面设置,这样的话命名空间就会改变
这里的这个地址对应于endpoint
endpoint 是一个存在的location;而namespace就是一个表示unique ID

在web service中,无论是operation 名,还是port type的名字,都用了同一个namespace. 
默认情况下,一个web service使用单一namespace来命名各种对象。这个namespace,称为web service 的Target Namespace 
Namespace 的命名必须是URI (Uniform Resource Identifer), 而URI有分2种类型. 
Web servie 中的target namespace, 使用两种URI都可以。
1。http://blog.csdn.net/dragondwy
2。urn:isbn:1-23-456789-0

下面是抄来的。。。其实都是抄来的

总结
Web service 是平台无关的,语言无关的,可以通过internet访问。 
一个 Web service 具有一个或多个ports.每个port 是指部署在某个网络地址上的一个binding. 
这个网络地址叫做endpoint. 一个binding是指某个port type使用的特有信息格式和特有的传输协议的结合。 
一个port type可以包含一个或多个operations. 每个operation 可以有输入信息(方法调用和输入参数)和输出信息(返回值)。 
每个信息包含一个或多个parts. 每个part都是一个在web service的schema中定义好的element。 
所有内容通过WSDL描述。 

如果要调用以讹RPC 类型的web service, 需要创建XML element, 其中包含operation 名字,所有输入信息(part)的element.等内容。 
而调用document 类型的web service,只需要发送一个 输入信息part 的内容即可。 
因为RPC类型 web service中的XML element没定义在任何schema中,因此没有校验机制。 
所以document 类型的web service是主流,为了更好地协作性考虑,应该使用这种类型。

web service,每个ports,bindings, port types, operations 都有一个QName作为唯一标识符。 
一个QName包含 local part和 XML namespace两部分。 
一个XML namespace是一个全局唯一URI. 
默认情况下,web service中所有这些对象的命名都是用单一的Target namespace. 

URI有两种类型:URL 和 URN. 
URN 具有这样的格式     urn:<NID>:<NSS>. 

在java中xfire中
AccountManagerClient client = new AccountManagerClient();//得到客户端,其实也就是得到商店的代理
		AccountManagerPortType portType = client.getAccountManagerHttpPort(); //得到那个手机。。。



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics