加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebServices:WSDL的结构分析

发布时间:2020-12-16 23:48:51 所属栏目:安全 来源:网络整理
导读:WebServices:WSDL的结构分析 ????? WSDL(Web Services Description Language,Web服务描述语言)是为描述Web Services发布的XML格式。W3C组织没有批准1.1版的WSDL,但是2.0版本已经在製訂中,2.0版将被作为推荐标准(recommendation)(一种官方标准),并

WebServices:WSDL的结构分析

????? WSDL(Web Services Description Language,Web服务描述语言)是为描述Web Services发布的XML格式。W3C组织没有批准1.1版的WSDL,但是2.0版本已经在製訂中,2.0版将被作为推荐标准(recommendation)(一种官方标准),并将被W3C组织批准为正式标准。WSDL描述Web服务的公共接口。这是一个基于XML的关于如何与Web服务通讯和使用的服务描述;也就是描述与目录中列出的Web服务进行交互时需要绑定的协议和信息格式。通常采用抽象语言描述该服务支持的操作和信息,使用的时候再将实际的网络协议和信息格式绑定给该服务。

????? WSDL 文档仅仅是一个简单的 XML 文档。它包含一系列描述某个 web service 的定义。

????? WebMthod的定义:

 1:  [WebService(Namespace = "http://tempuri.org/")]
 2:  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
 3:  [System.ComponentModel.ToolboxItem(false)]
 4:  public class WebService2 : System.Web.Services.WebService
 5:  {
 6:      [WebMethod]
 7:      public bool Add(TestClass testClass,int id)
 8:      {
 9:          return true;
10:      }
11:  }
12:  ?
13:  public class TestClass
14:  {
15:      public int a;
16:      public string b;
17:      public DateTime c;
18:  }
19:  ?

?????? WSDL的结构:

image

?????? 一个WSDL文档通常包含有以下元素,即types、message、portType、operation、binding、 service元素。这些元素嵌套在definitions元素中。

??????definitions是WSDL文档的根元素,definitions还声明各命名空间。

??????types,数据类型定义的容器,它使用某种类型系统(一般地使用XML Schema中的类型系统)。

1: <wsdl:types>
 2:      <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
 3:        <s:element name="Add">
 4:          <s:complexType>
 5:            <s:sequence>
 6:              <s:element minOccurs="0" maxOccurs="1" name="testClass" type="tns:TestClass" />
 7:              <s:element minOccurs="1" maxOccurs="1" name="id" type="s:int" />
 8:            </s:sequence>
 9:          </s:complexType>
10:        </s:element>
11:        <s:complexType name="TestClass">
12:          <13:            <s:element minOccurs="1" maxOccurs="1" name="a" type="s:int" />
14:            <s:element minOccurs="0" maxOccurs="1" name="b" type="s:string" />
15:            <s:element minOccurs="1" maxOccurs="1" name="c" type="s:dateTime" />
16:          </17:        </18:        <s:element name="AddResponse">
19:          <20:            <21:              <s:element minOccurs="1" maxOccurs="1" name="AddResult" type="s:boolean" />
22:            </23:          </24:        </25:      </s:schema>
26:    </wsdl:types>

???? types描述WebMethod的名称(Add),传入参数(testClass——包括对TestClass的详细描述,id),响应信息(AddResponse)。

?????message描述通信消息的数据结构的抽象类型化定义,使用types的描述的类型来定义整个消息的数据结构。

1: <wsdl:message name="AddSoapIn">
2:      <wsdl:part name="parameters" element="tns:Add" />
3:    </wsdl:message>
4:    <wsdl:message name="AddSoapOut">
5:      <wsdl:part name="parameters" element="tns:AddResponse" />
6:    </wsdl:message>

??????portTypeoperation描述服务和服务的方法。operation包括输入和输出(使用message的描述)。

wsdl:portType name="WebService2Soap">
wsdl:operation name="Add">
3:        <wsdl:input message="tns:AddSoapIn" />
4:        <wsdl:output message="tns:AddSoapOut" />
5:      </wsdl:operation>
wsdl:portType>

???????binding描述Web Services的通信协议。 <soap:binding/>描述使用SOAP协议,binding还描述Web Services的方法、输入、输出。

wsdl:binding name="WebService2Soap" type="tns:WebService2Soap">
soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
 3:      <wsdl:operation name="Add">
 4:        <soap:operation soapAction="http://tempuri.org/Add" style="document" />
 5:        <wsdl:input>
 6:          <soap:body use="literal" />
 7:        </ 8:        <wsdl:output>
 9:          <soap:body use="literal" />
11:      </12:    </wsdl:binding>

???????service描述Web Services访问点的集合。因为包括SOAP1.1和SOAP1.2的描述,所以一个方法有对应两描述。

wsdl:service name="WebService2">
wsdl:port name="WebService2Soap" binding="tns:WebService2Soap">
soap:address location="http://localhost:1552/WebService2.asmx" />
4:      </wsdl:port>
wsdl:port name="WebService2Soap12" binding="tns:WebService2Soap12">
6:        <soap12:address location="http://localhost:1552/WebService2.asmx" />
7:      </wsdl:port>
8:    </wsdl:service>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读