关于WEB服务的三要素SOAP WSDL UDDI

1.SOAP

1.soap简介

SOAP(Simple Object Access Protocol)是一种基于 XML 的协议,用于在 Web 上执行远程过程调用。使用 SOAP,应用程序可以通过 Internet 发送消息,从而在两个点之间进行通信。SOAP 封装了数据,定义了数据在 Web 上如何被传输,以及如何处理传输数据的意义。

SOAP 最常见的应用是在 Web 服务中。Web 服务使用 SOAP 作为通信协议,通过 HTTP 或其他协议将 SOAP 消息发送给服务端并接收响应。SOAP 消息可以包含请求参数、响应结果等信息,客户端和服务端可以通过解析 SOAP 消息来实现互相通信。

2.关于SOAP消息的具体格式

  1. SOAP 消息头:SOAP 消息头包含一些关于消息本身的元数据,包括消息的唯一标识、消息的类型、消息的路由等等。SOAP 协议规范并没有强制要求消息头的格式,但是在实践中,通常会使用一些标准化的头元素。例如,WS-Addressing 规范定义了一些头元素来表示消息的唯一标识和路由信息。

  2. SOAP 消息体:SOAP 消息体包含了实际的业务数据,也就是应用程序发送或接收的信息。SOAP 消息体的格式是由应用程序自己定义的,并且可以是任何有效的 XML 文档。例如,一个简单的 SOAP 请求消息可以如下所示:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope/" xmlns:ws="http://example.com/webservice">
  <soap:Header>
    <ws:TransactionId>123456</ws:TransactionId>
  </soap:Header>
  <soap:Body>
    <ws:GetUserInfo>
      <ws:UserName>johndoe</ws:UserName>
    </ws:GetUserInfo>
  </soap:Body>
</soap:Envelope>

上述 SOAP 请求消息包含两个部分:

  • SOAP 消息头包含名为 TransactionId 的元素,表示该消息的事务 ID。

  • SOAP 消息体包含了一个名为 GetUserInfo 的操作和一个参数 UserName,表示要查询的用户名称。

需要注意的是,SOAP 协议本身并不依赖于任何特定的传输协议,它可以在任何支持文本或二进制数据传输的网络协议之上使用,包括 HTTP、HTTPS、SMTP 等。因此,SOAP 协议既可以用于 Web 服务中,也可以用于点对点的数据传输。

SOAP 协议中的消息除了头和体之外,还可能包含一些附件部分,可用于传输二进制数据(例如图像或音频文件)SOAP 消息头和正文通常是 XML 格式,但 SOAP 协议支持混合内容,因此限制并非绝对。SOAP 消息可以包含任何 XML、非 XML 数据或混合数据的组合。

2.WSDL

1.WSDL简介

WSDL(Web Services Description Language)是 Web 服务描述语言,用于描述 Web 服务的功能和如何访问这些功能。WSDL 文件是一个 XML 文档,用于指定 Web 服务的各种细节,包括输入与输出参数、操作和消息。

2.WSDL的具体应用

下面是一个WSDL文档实例:

当我们需要通过 Web 服务获取某个商品的详细信息时,我们可以使用 WSDL 描述这个 Web 服务的详细信息,包括输入、输出参数等。

以下是一个简单的 WSDL 文档示例,它描述了一个获取商品信息的 Web 服务:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="GetProductInfo"
                  targetNamespace="http://www.example.com/Product"
                  xmlns:tns="http://www.example.com/Product"
                  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
                  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

  <!-- 定义输入消息 -->
  <wsdl:message name="GetProductInput">
    <wsdl:part name="productID" type="xsd:int"/>
  </wsdl:message>

  <!-- 定义输出消息 -->
  <wsdl:message name="GetProductOutput">
    <wsdl:part name="productInfo" type="tns:ProductInfo"/>
  </wsdl:message>

  <!-- 定义操作 -->
  <wsdl:portType name="ProductService">
    <wsdl:operation name="GetProduct">
      <wsdl:input message="tns:GetProductInput"/>
      <wsdl:output message="tns:GetProductOutput"/>
    </wsdl:operation>
  </wsdl:portType>

  <!-- 定义绑定 -->
  <wsdl:binding name="ProductBinding" type="tns:ProductService">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="GetProduct">
      <soap:operation soapAction="http://www.example.com/Product/GetProduct"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>

  <!-- 定义服务 -->
  <wsdl:service name="ProductService">
    <wsdl:port name="ProductPort" binding="tns:ProductBinding">
      <soap:address location="http://www.example.com/Product/Service"/>
    </wsdl:port>
  </wsdl:service>

  <!-- 定义复杂类型 -->
  <wsdl:types>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/Product">
      <xsd:complexType name="ProductInfo">
        <xsd:sequence>
          <xsd:element name="name" type="xsd:string"/>
          <xsd:element name="price" type="xsd:float"/>
          <xsd:element name="description" type="xsd:string" minOccurs="0"/>
        </xsd:sequence>
      </xsd:complexType>
    </xsd:schema>
  </wsdl:types>

</wsdl:definitions>

在这个示例中,WSDL 定义了名称为 GetProductInfo 的 Web 服务,它有一个输入参数 productID,一个输出参数 productInfo,其中 productInfo 是一个复杂类型 ProductInfo,包含商品的名称、价格和描述信息。WSDL 还定义了该服务的操作、绑定和服务等信息,客户端可以通过解析 WSDL 文件来使用该 Web 服务。

当你需要访问某个 Web 服务时,你需要根据 WSDL 文档了解该服务的接口定义,然后根据定义构建符合接口定义要求的 SOAP 请求报文,并将请求报文发送到该 Web 服务的地址。因此,SOAP 请求包的构建与 WSDL 文档的访问是不可分割的过程,但并不是直接访问 WSDL 文档生成 SOAP 请求包。

3.UDDI

UDDI(Universal Description, Discovery and Integration)是一种基于 XML 的标准,用于描述和发现 Web 服务。它包含一个 Web 服务注册中心,允许服务提供者将 Web 服务发布到注册中心,以便客户端查找和访问这些服务。UDDI 允许客户端通过关键词、分类、地理位置等方式查找适合自己的 Web 服务。

  1. Web 服务提供者将自己的 Web 服务信息注册到 UDDI 注册中心,并应用与自己 Web 服务相关的分类、关键字、地理位置等标识信息。

  2. 客户端应用程序需要使用某个 Web 服务时,通过 UDDI 注册中心查找符合自己需求的 Web 服务,获取服务的元数据信息和访问地址等数据。

  3. 客户端应用程序通过访问 UDDI 注册中心获取到的 Web 服务信息,构建符合 Web 服务协议规范的请求报文,向 Web 服务发起请求,并获取到 Web 服务返回的数据。

UDDI 的优点是,它提供了一种标准的、统一的 Web 服务描述方式,方便客户端查找适合自己的 Web 服务,同时也方便 Web 服务提供者将自己的服务发布到 UDDI 注册中心,提高服务的可发现性和可复用性。

此标准现在已逐渐不再应用,故不多介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值