第 4 章 定义逻辑接口


摘要

逻辑服务接口使用 portType 元素来定义。

概述

逻辑服务接口使用 WSDL portType 元素来定义。portType 元素是抽象操作定义的集合。每一操作由用于完成操作所代表的事务的输入、输出和错误消息定义。当生成代码来实施 portType 元素定义的服务接口时,每个操作都会转换为一个方法,其中包含由输入、输出和合同中指定的参数定义的参数。

Process

要在 WSDL 合同中定义逻辑接口,您必须执行以下操作:

  1. 创建一个 portType 元素以包含接口定义,并为它指定唯一名称。请参阅 “端口类型”一节
  2. 为接口中定义的每个操作创建一个操作元素。请参阅 “操作”一节
  3. 对于每个操作,指定用于表示操作参数列表、返回类型和例外的消息。请参阅 “操作消息”一节

端口类型

WSDL portType 元素是逻辑接口定义中的根元素。虽然许多 Web 服务实现将 portType 元素直接映射到生成实现对象,但逻辑接口定义并不指定由实施的服务提供的确切功能。例如,名为 ticketSystem 的逻辑接口可导致销售问题单或问题清除票据实现。

portType 元素是 WSDL 文档的单元,它映射到一个绑定,用于定义由端点公开定义的服务使用的物理数据。

WSDL 文档中的每个 portType 元素都必须具有唯一的名称,该名称使用 name 属性指定,由一组操作组成,它们在 操作 元素中描述。WSDL 文档可以描述任意数量的端口类型。

操作

使用 WSDL 操作元素定义的逻辑 操作,定义两个端点之间的交互。例如,对检查帐户平衡的请求和跨小部件的顺序可以定义为操作。

portType 元素中定义的每个操作都必须使用 name 属性指定的唯一名称。定义操作需要 name 属性。

操作消息

逻辑操作由一组元素组成,它们代表端点之间传递的逻辑消息来执行操作。可以描述操作的元素列在 表 4.1 “操作消息元素” 中。

表 4.1. 操作消息元素
element描述

输入

指定在发出请求时客户端端点发送到服务提供商的消息。此消息的部分对应于操作的输入参数。

output

指定服务供应商发送到客户端端点的消息以响应请求。此消息的部分对应于任何可由服务提供商更改的操作参数,如引用传递的值。这包括操作返回值。

fault

指定用于在端点之间传递错误条件的消息。

要至少有一个 输入 或一个 输出 元素,需要一个操作。操作可以同时具有 输入和输出 元素,但它只能有一个。不需要操作来有任何错误元素,但可以根据需要具有任意数量的 故障 元素。

元素在 表 4.2 “输入和输出元素的属性” 中列出的有两个属性。

表 4.2. 输入和输出元素的属性
属性描述

name

标识消息,以便在将操作映射到 concrete 数据格式时对其进行引用。名称必须在封闭的端口类型内唯一。

message

指定描述正在发送或接收数据的抽象消息。message 属性的值必须与 WSDL 文档中定义的其中一个抽象消息的 name 属性对应。

不需要为所有 输入和输出 元素指定 name 属性;WSDL 提供了一个基于嵌套操作名称的默认命名方案。如果操作中只有一个元素,则元素名称默认为操作的名称。如果使用 输入和输出 元素,则元素名称默认为操作的名称,并且分别附加了 RequestResponse

返回值

因为 operation 元素是在操作过程中传递的数据抽象定义,所以 WSDL 不提供为操作指定的返回值。如果方法返回了一个值,它将映射到 output 元素,作为该消息的最后一个部分。

示例

例如,您可能有一个与 例 4.1 “personalInfo lookup interface” 中显示的接口类似的接口。

例 4.1. personalInfo lookup interface

interface personalInfoLookup
{
  personalInfo lookup(in int empID)
  raises(idNotFound);
}

这个接口可以映射到 例 4.2 “personalInfo 查找端口类型” 中的端口类型。

例 4.2. personalInfo 查找端口类型

<message name="personalLookupRequest">
  <part name="empId" element="xsd1:personalLookup"/>
<message/>
<message name="personalLookupResponse">
  <part name="return" element="xsd1:personalLookupResponse"/>
<message/>
<message name="idNotFoundException">
  <part name="exception" element="xsd1:idNotFound"/>
<message/>
<portType name="personalInfoLookup">
  <operation name="lookup">
    <input name="empID" message="tns:personalLookupRequest"/>
    <output name="return" message="tns:personalLookupResponse"/>
    <fault name="exception" message="tns:idNotFoundException"/>
  </operation>
</portType>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.