WSDL介绍

 

既然已经翻译了WS,WSDL也不能逃脱了,一路趁热翻译了算了

出处http://www.w3schools.com/wsdl/wsdl_intro.asp 喜欢看英文的可以去看 我是懒得看 但外文的确实是简单易懂阿

 

第一章 WSDL开章简述

WSDL是个XML为基础的语言, 用来描述WS以及如何连接他们 这里 WS web service DL Describe language 就是这么简单

基础知识

XML

XML namespaces

XML Schema

如果你不懂,就去找找

 

什么是 WSDL

这个我在WS里边说了  不重复了 WS中那一部分 算了 我考过来 我真厚道

 

WSDL-

1.  Web Services Description Language

2.  XML写的

3.  XML文档

4.  用来描述WS

5.  用来定位WS

6.  暂不属于W 3C 标准

 

WSDL用来描述WS

WSDLXML文档, 描述WS.他标注了服务的位置以及服务所能提供的方法或者操作

WSDLW 3C 的发展史

 

WSDL1.1Ariba,IBM还有MSW 3C 笔记形式在20013月提交,用来描述在XML协议 W 3C XML 服务实体的服务(什么跟什么阿,估计一会我才能明白)

W 3C 的笔记是W 3C 专用来讨论用的。所以这种笔记的发布是不具备w 3c 发言效果的。因为没有w 3c 成员的签名

WSDL 1.2的工作草案时20027月被W 3c 发布的

你可以去 W3C Tutorial 去学关于w 3c 更多的东西(难不成一会又得翻译这个 我这个人喜欢在个人能力允许的情况下尽可能的多弄些东西 所以文字这东西越多越好 省得老无所依)

第二章 WSDL文档

WSDL就是个简单的XML文档

包括一些一组 WS描述的定义

WSDL文档结构

成分                                         定义

<portType> WS所进行的操作

<message> WS所用的消息

<types> WS所用的数据类型

<binding> WS所用的传输协议

下边是个例子

<definitions>
<types>
   definition of types........
     
     
</types>

  
  
   
    
  
  
<message>
   definition of a message....
     
     
</message>

  
  
   
    
  
  
<portType>
   definition of a port.......
     
     
</portType>

  
  
   
    
  
  
<binding>
   definition of a binding....
     
     
</binding>

  
  
   
    
  
  
</definitions>

WSDL也可有其他成分比如扩展组件和服务组件来把多个WS的描述弄到一个WSDL文档里

详细的语法定义可到WSDL语法那章去看(估计一会会翻译)

WSDL端口

<portType>是最重要的WSDL组件

他描述了在一个WS中,什么样的操作可以被使用,什么样的消息会被包含。

<portType>可以被类比为一个在传统编程模式中的方法库,或者一个模板,或者一个类。

WSDL消息

<message>定义了操作中需要的数据

每个消息可由一个或多个部分, 这些部分好比传统编程中的方法中的参数。

WSDL 类型

<types>定义了WS要用的数据类型

由于大多数平台的数据定义特性, WSDLXML标准语法去定义数据类型

WSDL绑定

<binding>定义消息格式以及端口的协议具体内容

一个WSDL的例子

<message name="getTermRequest">
   <part name="term" type="xs:string"/>
</message>

  
  
   
    
  
  
<message name="getTermResponse">
   <part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
  <operation name="getTerm">
      <input message="getTermRequest"/>
      <output message="getTermResponse"/>
  </operation>
</portType>

在这个例子中 <portType>定义了glossaryTerms作为端口名称,而getTerm作为操作名称

getTerm操作有一个输入消息叫作getTermRequest和一个输出消息getTermResponse

<message>定义了每个消息的组成部分以及相关的数据类型

用传统编程结构来理解,glossaryTerm如同一个方法库,getTerm是一个方法,getTermRequest作为输入的参数getTermResponse作为返回的参数

第三章        WSDL端口

WSDL端口描述一个WS发布服务的输出接口(合法操作)

WSDL端口

portType>组件是最重要的WSDL成分

他描述了在一个WS中,什么样的操作可以被使用,什么样的消息会被包含。

这个端口定义了WS的连接切入点。好比一个功能库, 每一个操作都好比一个方法。

操作模式

Request-response 请求-响应模式是最普遍的操作方法。不过WSDL定义了四种。

1.  单向 收一个消息不过不用反馈

2.  请求-响应 收一个消息然后发回反馈

3.  Solicit-response 诱发-响应 发一个请求然后等反馈

4.  Notification 提醒 发一个消息但不等其反馈

1.  单向操作实例

<message name="newTermValues">
   <part name="term" type="xs:string"/>
   <part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
   <operation name="setTerm">
      <input name="newTerm" message="newTermValues"/>
   </operation>
</portType >

 

上例中有个单向操作叫作setTerm

这个setTerm允许输入新的词库通过newTermValues这个消息,且没有定义输出的响应

2.  请求-响应操作实例

<message name="getTermRequest">
   <part name="term" type="xs:string"/>
</message>

  
  
   
    
  
  
<message name="getTermResponse">
   <part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
  <operation name="getTerm">
      <input message="getTermRequest"/>
      <output message="getTermResponse"/>
  </operation>
</portType>

在这个实例中我们看到一个请求响应得操作实例getTerm.

它需要一个输入消息getTermRequest和一个参数term,然后通过另一个getTermResponse和一个value参数返回值

 

第四章WSDL绑定

<binding>定义消息格式以及端口的协议具体内容

绑定到SOAP

一个请求-响应操作的实例

<message name="getTermRequest">
   <part name="term" type="xs:string"/>
</message>

  
  
   
    
  
  
<message name="getTermResponse">
   <part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
  <operation name="getTerm">
      <input message="getTermRequest"/>
      <output message="getTermResponse"/>
  </operation>
</portType>
<binding type="glossaryTerms" name="b1">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
  <operation>
    <soap:operation
     soapAction="http://example.com/getTerm"/>
    <input>
      <soap:body use="literal"/>
    </input>
    <output>
      <soap:body use="literal"/>
    </output>
  </operation>
</binding>

 

这段我觉得应该好好看看 对理解SOAP很有帮助

绑定组建具有两个属性,名字属性和类型属性

名字属性 定义了这个绑定的名称,而类型属性指向了绑定的端口,在这个例子里,glossaryTerms这个端口

Soap:binding组件有俩属性 样式属性以及传输属性

样式属性可以有rpc或者document良种,在这个实例用的是document文档模式。Transport属性定义了SOAP协议,这个例子离我们用的是HTTP.

操作组建定义了在那个端口中所需要的所有的操作

所有的相关与SOAP的动作需要被定义。 你必须了解inputoutput是如何编码的。这里我们用的literal(文字的)

WSDLUDDI

UDDI是一种文件夹服务用来服务商务客户去注册和搜索WS

UDDI Universal Description, Discovery and Integration

UDDI-

1.  文件夹用来存放WS的信息

2.  存放用来描述WS接口的WSDL

3.  通过SOAP通信

4.  属于MS.NET平台的内置部分

UDDI建立的基础

UDDI使用World Wide Web Consortium(W 3C )以及Internet Engineering Task Force(IETF)网络工业任务组织的网络标准,例如XML,HTTP以及DNS的协议

UDDI使用WSDL去描述网络服务的接口

另外,在W 3C 网站我们还能发现,WDSL通过融合SOAP,被人们认定为XML的消息接口的详细定义。

UDDI 的优点

所有规模的工业及商业机构可以通过UDDI获益。

UDDI之前,商业机构没有任何网络标准可以向其客户以及合作伙伴提供产品和服务信息。更别说和其他机构交流系统和工程的方法了。

UDDI所能帮助解决的问题有:

1.  使从无数在线的商业服务中挑选自己需要的成为可能

2.  定义了如何将所需要的生意商业化

3.  扩大用户群以及向现有用户提供更多的服务

4.  在全球网络经济中通过解决客户需要来移除障碍以使更多的快速参与者加入

5.  程序化的将服务以及商业操作定义为一个单一,开诚以及安全的环境。

UDDI如何被使用

当一个工业机构公布了一个飞机航班检索及预定的UDDI标准,航空公司就可以将其服务注册到UDDI目录中。旅行社可以通过搜索UDDI目录来查找航空公司的机票预定界面。当某航空公司的机票预定界面被找到后,旅行社可以立刻与该公司的服务进行交互因为这个界面是良好定制的。

都有谁支持UDDI

UDDI应所有的主流平台和软件提供商如Dell,Fujitsu,HP,Hitachi.IBM,Intel,MS,Oracle,SAP以及Sun以及其他大型的联合体和市场操作商,以及电子商务的领导级机构要求而生。

UDDI组织有超过220个公司成员。

第五章 WSDL语法

 

1.2版本的WSDL语法描述如下

<wsdl:definitions name="nmtoken"? targetNamespace="uri">
    <import namespace="uri" location="uri"/> *
    <wsdl:documentation .... /> ?
    <wsdl:types> ?
        <wsdl:documentation .... /> ?
        <xsd:schema .... /> *
    </wsdl:types>
    <wsdl:message name="ncname"> *
        <wsdl:documentation .... /> ?
        <part name="ncname" element="qname"? type="qname"?/> *
    </wsdl:message>
    <wsdl:portType name="ncname"> *
        <wsdl:documentation .... /> ?
        <wsdl:operation name="ncname"> *
            <wsdl:documentation .... /> ?
            <wsdl:input message="qname"> ?
                <wsdl:documentation .... /> ?
            </wsdl:input>
            <wsdl:output message="qname"> ?
                <wsdl:documentation .... /> ?
            </wsdl:output>
            <wsdl:fault name="ncname" message="qname"> *
                <wsdl:documentation .... /> ?
            </wsdl:fault>
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:serviceType name="ncname"> *
        <wsdl:portType name="qname"/> +
    </wsdl:serviceType>
    <wsdl:binding name="ncname" type="qname"> *
        <wsdl:documentation .... /> ?
        <-- binding details --> *
        <wsdl:operation name="ncname"> *
            <wsdl:documentation .... /> ?
            <-- binding details --> *
            <wsdl:input> ?
                <wsdl:documentation .... /> ?
                <-- binding details -->
            </wsdl:input>
            <wsdl:output> ?
                <wsdl:documentation .... /> ?
                <-- binding details --> *
            </wsdl:output>
            <wsdl:fault name="ncname"> *
                <wsdl:documentation .... /> ?
                <-- binding details --> *
            </wsdl:fault>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="ncname" serviceType="qname"> *
        <wsdl:documentation .... /> ?
        <wsdl:port name="ncname" binding="qname"> *
            <wsdl:documentation .... /> ?
            <-- address details -->
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>

总结下

这个教程教你如何创建一个WSWSDL文档。它同样指出了服务的位置以及服务所提供的操作或方法。

你已经学了如何定义一个WS的消息格式以及端口详情

你也学了你可以通过UDDI注册和查找一个WS

下一步是SOAP.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值