【学习心得】WebService 从入门到有点东西(理论篇-WSDL)

理论篇

  • 简介

    1. 定义(最讨厌缩写了,特别是在接触5G的时候,但是为了方便,还是莫得办法的。我自己的方法是先把全称搞下来,理解一遍 ——所以此文除了众所周知的专有名词,所有缩写几乎都有全称及翻译)。Web Service 顾名思义,即网络服务,是跨语言、跨平台的远程调用技术。Web Service 技术主体为 XML + XSD,SOAP,WSDL。XML为封装数据的载体,XSD用来描述数据类型。
    2. 目的。主要需求来源有二,之一为提供公用的服务,如天气服务,验证码,翻译等。之二为实现不同系统的数据交换。
    3. Client & Server。通过WSDL知悉服务,Client 发送服务请求,Server端接受请求并处理,返回response给Client,Client接收此回复。
  • WSDL

    WSDL,Web Services Description Language(Web Service描述语言)用XML的形式以描述网络服务,如网络服务提供的方法,所需的参数和返回的参数等。
    WSDL的文档结构如下(说明比较多,先大概浏览一下,可以和下文的实例进行代入学习):
<definitions>

<types>
  主要定义消息的数据类型。
</types>

<message>
  定义交互消息,如入参,出参。消息中包含一个或多个部件part
  <part>
    部件中的内容就是types中的内容。
  </part>
</message>

<portType>
  操作集合
  <operation>
    <document>
    	说明
    </document>
    <input> 
      定义入参,这里的参数就是message。
    </input>
    <output> 
      定义返回结果,这里的参数也是message。
    </output>
  </operation>
</portType>

<binding>
  定义通信协议,如SOAP,HTTPGet,HTTPPost
</binding>

</definitions>

实例:

<wsdl:types>
  <s:schema elementFormDefault="qualified" targetNamespace="http://WebXml.com.cn/">
    <s:element name="getWeatherbyCityNamePro">
      <s:complexType>
        <s:sequence>
           <s:element minOccurs="0" maxOccurs="1" name="theCityName" type="s:string"/>
           <s:element minOccurs="0" maxOccurs="1" name="theUserID" type="s:int"/>
        </s:sequence>
      </s:complexType>
    </s:element>
  </s:schema>
</wsdl:types>

<wsdl:message name="getWeatherbyCityNameProSoapIn">
    <wsdl:part name="parameters" element="tns:getWeatherbyCityNamePro"/>
</wsdl:message>

上面是获取天气的一个文档片段,第一个element:getWeatherbyCityNamePro指明了getWeatherbyCityNameProSoapIn消息的部件,即获取天气的入参,参数是两个,类型分别为string和int。

<message name="getCityRequest">
  <part name="ProvinceName" type="xs:string"/> 
  							**-- 入参为省份名,类型为string**
</message>

<message name="getCityResponse">
  <part name="cityList" element="tns:ArrayOfString"/>	
  							**-- 出参:城市列表,类型:string数组**
</message>

<portType name="WebServiceSoap"> 						
							**-- 端口名**
  <operation name="getCity">  							
  							**-- 操作名:getCity 提供给Client查询城市服务**
    <input message="getCityRequest"/>  --
    						**-- 定义入参为getCityRequest,这里的入参就是message(到这里可以理解了吧,message就是定义CS两端通信的消息)**
    <output message="getCityResponse"/> 
    						**-- 定义出参为getCityResponse,这里的入参也是message
  </operation>
</portType>

portType操作类型,WSDL提供了四种:
按照服务端和客户端分类,
服务端:

  • One-way 此操作可接受消息,但不会返回响应。如接收一个插入日志的请求,不返回响应。示例如下:insertLog只有一个input节点,没有output。
<message name="newLogValues">
  <part name="log" type="xs:string"/>
  <part name="value" type="xs:string"/>
</message>

<portType name="glossaryLogs">
  <operation name="insertLog">
    <input name="newLog" message="newLogValues"/>
  </operation>
</portType >
  • Request-response 此操作可接受一个请求并会返回一个响应。如接收一个查询城市列表的请求,会返回一个包含城市数组的响应。示例如下:getTerm有input和ouput节点。
<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>

客户端:

  • Solicit-response 此操作可发送一个请求,并会等待一个响应。Solicit是索求的意思,可以容易地理解为客户端向服务端索求,既然索求,那就会等待它的响应。比如发送一个查询城市列表的请求,并等待服务端返回数据。(示例与服务端的Request-response对应)
  • Notification 此操作可发送一条消息,但不会等待响应。notification是通知的意思,也就是说我只负责拿个大喇叭跟你喊:谁TM买小米儿。如发送一个插入日志的请求,不用等待响应,插就完事了。(示例与服务端的One-way对应)

无情链接:贴一个天气服务的WSDL,供读者深入理解学习

  • UDDI

注册和搜索 web 服务。

  • SOAP

    SOAP,Simple Object Access Protocol(简单对象访问协议),基于HTTP协议,可以理解为HTTP + XML。
    SOAP消息的基本结构:
<? xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header>
  ...
  ...包含头部信息的 XML 标签
  ...
</soap:Header>
<soap:Body>
  ...
  ...包含所有的调用和响应的主体信息的标签
  ...
  <soap:Fault>
    ...
    ...错误信息标签
    ...
  </soap:Fault>
</soap:Body>
</soap:Envelope>

Envelope 元素是SOAP消息的根元素,指明该XML文档为SOAP消息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: .NET Web服务是一种基于标准的Web服务架构,它使用SOAP(简单对象访问协议)和WSDLWeb服务描述语言)来实现跨平台和跨语言的通信。WSDL是一种XML格式的文档,它定义了WebService的接口和数据类型。 在.NET中,我们可以使用WebService语言来创建和发布Web服务。在创建和发布Web服务时,我们需要使用WSDL。通过WSDL,我们可以定义WebService的接口以及它所使用的数据类型和操作。WSDL描述了WebService的详细信息,包括它的地址、端口、传输协议等。 在客户端使用Web服务时,我们可以通过WSDLWeb服务中获取接口和数据类型的描述信息。通过WSDL,客户端可以了解到Web服务提供的功能、接收的参数类型以及返回的结果类型。这使得客户端可以根据Web服务的描述信息生成相应的客户端代理类,并利用该代理类与Web服务进行交互。 另外,通过WSDL,不仅可以对Web服务进行动态调用,还可以支持工具自动生成代码,以便于客户端使用。通过解析WSDL文档,我们可以生成相应的服务类和客户端代理类,从而简化了Web服务的调用过程。 总而言之,WSDL在.NET Web服务中扮演着非常重要的角色,它用于定义Web服务的接口和数据类型,并提供了客户端生成所需代码的便利。通过WSDL,我们可以更好地理解和使用Web服务,实现跨平台和跨语言的通信。 ### 回答2: .NET Web Service是一种使用SOAP(简单对象访问协议)协议和WSDLWeb 服务描述语言)定义和创建的跨平台、跨语言的网络服务。WSDL是一种用于描述Web服务的XML格式文件。 .NET Web ServiceWSDL文件包含了服务的端点、方法、参数、返回类型等详细信息。通过阅读WSDL文件,客户端可以了解到Web服务的功能和使用方式。 WSDL文件中定义了服务的接口以及与之交互的消息格式。客户端可以通过解析WSDL文件来生成对应的客户端代理类,从而能够与Web服务进行交互。客户端代理类将根据WSDL文件中的定义自动处理SOAP消息的生成、解析和传输,并将接收到的结果转换为本地对象,方便客户端使用。 使用WSDL可以实现不同语言和平台之间的互操作性。在不同的开发环境中,可以使用不同的工具来解析WSDL文件,生成相应的客户端代理类。这样,无论是使用.NET、Java、Python还是其他语言,都可以方便地调用相同的Web服务。 总之,.NET Web ServiceWSDL文件是描述Web服务的重要文件,它定义了服务接口和消息格式,提供了与服务交互的详细信息。通过解析WSDL文件,客户端可以生成对应的客户端代理类,实现与Web服务的交互。同时,WSDL还提供了平台和语言无关的特性,使得跨平台和跨语言的互操作性成为可能。 ### 回答3: .NET Web服务描述语言(WSDL)是一种XML格式的文件,用于描述提供的Web服务的接口和操作。它提供了一种标准的方式来定义Web服务的输入、输出和方法。 首先,WSDL文件是Web服务的服务描述文件。它定义了Web服务的地址、命名空间、方法、输入参数和输出结果等信息。通过查看WSDL文件,客户端可以了解Web服务的功能和可用方法。 WSDL文件通常包含以下几个部分: 1. 服务描述:描述了服务的地址和命名空间。 2. 数据类型定义:定义了Web服务的输入和输出数据类型,包括简单类型和复杂类型。 3. 端口类型定义:定义了Web服务的接口,包括方法的名称、输入参数和输出结果。 4. 绑定定义:将端口类型和传输协议(如SOAP、HTTP)进行绑定。 5. 服务定义:定义了Web服务的名称、端口和绑定。 客户端可以使用WSDL文件来生成Web服务的客户端代理类,以便在编程过程中调用Web服务的方法。通过生成的客户端代理类,客户端可以轻松地与Web服务进行通信、发送请求和接收响应。 WSDL文件还可以用于Web服务的自动化工具和集成开发环境(IDE)的集成。这样,开发人员可以更方便地创建和开发基于Web服务的应用程序。 总之,.NET Web服务描述语言(WSDL)是一种用于描述Web服务接口和操作的标准格式。它可以帮助客户端了解和使用Web服务,并提供了一种自动生成客户端代理类的方便方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值