既然已经翻译了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
WSDL是XML文档, 描述WS用.他标注了服务的位置以及服务所能提供的方法或者操作
WSDL在W 3C 的发展史
WSDL1.1被Ariba,IBM还有MS以W 3C 笔记形式在2001年3月提交,用来描述在XML协议 上W 3C XML 服务实体的服务(什么跟什么阿,估计一会我才能明白)
W 3C 的笔记是W 3C 专用来讨论用的。所以这种笔记的发布是不具备w 3c 发言效果的。因为没有w 3c 成员的签名
WSDL 1.2的工作草案时2002年7月被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要用的数据类型
由于大多数平台的数据定义特性, WSDL用XML标准语法去定义数据类型
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的动作需要被定义。 你必须了解input和output是如何编码的。这里我们用的literal(文字的)。
WSDL和UDDI
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>
总结下
这个教程教你如何创建一个WS的WSDL文档。它同样指出了服务的位置以及服务所提供的操作或方法。
你已经学了如何定义一个WS的消息格式以及端口详情
你也学了你可以通过UDDI注册和查找一个WS。
下一步是SOAP.