WSDL学习笔记

本文介绍了 WSDL(Web Services Description Language)的基本概念及其在 Web 服务中的应用。内容包括 WSDL 的组成部分、如何描述 Web 服务及操作、绑定详情以及与 UDDI 的关系等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载:http://www.w3school.com.cn/wsdl/index.asp

1WSDL 教程

1.1 WSDL 简介

WSDL 是基于 XML 的用于描述 Web Services 以及如何访问 Web Services 的语言。

什么是 WSDL?

WSDL 指网络服务描述语言

WSDL 使用 XML 编写

WSDL 是一种 XML 文档

WSDL 用于描述网络服务

WSDL 也可用于定位网络服务

WSDL 可描述网络服务(Web Services

WSDL 指网络服务描述语言 (Web Services Description Language)

WSDL 是一种使用 XML 编写的文档。这种文档可描述某个 Web service。它可规定服务的位置,以及此服务提供的操作(或方法)。

1.2 WSDL文档

WSDL 文档仅仅是一个简单的 XML 文档。

它包含一系列描述某个 web service 的定义。

WSDL 文档结构

WSDL 文档是利用这些主要的元素来描述某个 web service 的:

 

一个 WSDL 文档的主要结构是类似这样的:

 

WSDL 文档可包含其它的元素,比如 extension 元素,以及一个 service 元素,此元素可把若干个 web services 的定义组合在一个单一的 WSDL 文档中。

WSDL 端口

<portType> 元素是最重要的 WSDL 元素。

它可描述一个 web service、可被执行的操作,以及相关的消息。

可以把 <portType> 元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。

WSDL 消息

<message> 元素定义一个操作的数据元素。

每个消息均由一个或多个部件组成。可以把这些部件比作传统编程语言中一个函数调用的参数。

WSDL types

<types> 元素定义 web service 使用的数据类型。

为了最大程度的平台中立性,WSDL 使用 XML Schema 语法来定义数据类型。

WSDL Bindings

<binding> 元素为每个端口定义消息格式和协议细节。

WSDL 实例

这是某个 WSDL 文档的简化的片段:

 

在这个例子中,<portType> 元素把 "glossaryTerms" 定义为某个端口的名称,把 "getTerm" 定义为某个操作的名称。

操作 "getTerm" 拥有一个名为 "getTermRequest" 的输入消息,以及一个名为 "getTermResponse" 的输出消息。

<message> 元素可定义每个消息的部件,以及相关联的数据类型。

对比传统的编程,glossaryTerms 是一个函数库,而 "getTerm" 是带有输入参数 "getTermRequest" 和返回参数 getTermResponse 的一个函数。

1.3 WSDL 端口

WSDL 端口可描述由某个 web service 提供的界面(合法操作)。

WSDL 端口

<portType> 元素是最重要的 WSDL 元素。

它可描述一个 web service、可被执行的操作,以及相关的消息。

端口定义了指向某个 web service 的连接点。可以把该元素比作传统编程语言中的一个函数库(或一个模块、或一个类),而把每个操作比作传统编程语言中的一个函数。

操作类型

请求-响应是最普通的操作类型,不过 WSDL 定义了四种类型:

 

 

One-Way 操作

一个 one-way 操作的例子:

 

在这个例子中,端口 "glossaryTerms" 定义了一个名为 "setTerm" one-way 操作。

这个 "setTerm" 操作可接受新术语表项目消息的输入,这些消息使用一条名为 "newTermValues" 的消息,此消息带有输入参数 "term" "value"。不过,没有为这个操作定义任何输出。

Request-Response 操作

一个 request-response 操作的例子:

 

在这个例子中,端口 "glossaryTerms" 定义了一个名为 "getTerm" request-response 操作。

"getTerm" 操作会请求一个名为 "getTermRequest" 的输入消息,此消息带有一个名为 "term" 的参数,并将返回一个名为 "getTermResponse" 的输出消息,此消息带有一个名为 "value" 的参数。

1.4 WSDL 绑定

WSDL 绑定可为 web service 定义消息格式和协议细节。

绑定到 SOAP

一个 请求 - 响应操作的例子:

 

binding 元素有两个属性 - name 属性和 type 属性。

name 属性定义 binding 的名称,而 type 属性指向用于 binding 的端口,在这个例子中是 "glossaryTerms" 端口。

soap:binding 元素有两个属性 - style 属性和 transport 属性。

style 属性可取值 "rpc" "document"。在这个例子中我们使用 documenttransport 属性定义了要使用的 SOAP 协议。在这个例子中我们使用 HTTP

operation 元素定义了每个端口提供的操作符。

对于每个操作,相应的 SOAP 行为都需要被定义。同时您必须如何对输入和输出进行编码。在这个例子中我们使用了 "literal"

1.5 WSDL UDDI

UDDI 是一种目录服务,企业可以使用它对 Web services 进行注册和搜索。

UDDI,英文为 "Universal Description, Discovery and Integration",可译为“通用描述、发现与集成服务”。

什么是 UDDI

UDDI 是一个独立于平台的框架,用于通过使用 Internet 来描述服务,发现企业,并对企业服务进行集成。

l UDDI 指的是通用描述、发现与集成服务

l UDDI 是一种用于存储有关 web services 的信息的目录。

l UDDI 是一种由 WSDL 描述的 web services 界面的目录。

l UDDI 经由 SOAP 进行通信

l UDDI 被构建入了微软的 .NET 平台

UDDI 基于什么?

UDDI 使用 W3C IETF* 的因特网标准,比如 XMLHTTP DNS 协议。

UDDI 使用 WSDL 来描述到达 web services 的界面

此外,通过采用 SOAP,还可以实现跨平台的编程特性,大家知道,SOAP XML 的协议通信规范,可在 W3C 的网站找到相关的信息。

*注释:IETF - Internet Engineering Task Force

UDDI 的好处

任何规模的行业或企业都能得益于 UDDI

UDDI 之前,还不存在一种 Internet 标准,可以供企业为它们的企业和伙伴提供有关其产品和服务的信息。也不存在一种方法,来集成到彼此的系统和进程中。

UDDI 规范帮助我们解决的问题:

使得在成百万当前在线的企业中发现正确的企业成为可能

定义一旦首选的企业被发现后如何启动商业

扩展新客户并增加对目前客户的访问

扩展销售并延伸市场范围

满足用户驱动的需要,为在全球 Internet 经济中快速合作的促进来清除障碍

UDDI 如何被使用

假如行业发布了一个用于航班比率检测和预订的 UDDI 标准,航空公司就可以把它们的服务注册到一个 UDDI 目录中。然后旅行社就能够搜索这个 UDDI 目录以找到航空公司预订界面。当此界面被找到后,旅行社就能够立即与此服务进行通信,这样由于它使用了一套定义良好的预订界面。

谁在支持 UDDI

UDDI 是一个跨行业的研究项目,由所有主要的平台和软件提供商驱动,比如:Dell, Fujitsu, HP, Hitachi, IBM, Intel, Microsoft, Oracle, SAP, 以及 Sun, 它既是一个市场经营者的团体,也是一个电子商务的领导者。

已有数百家公司参与了这个 UDDI 团体。

1.6 完整的 WSDL 语法

描述于 W3C 工作草案的完整 WSDL 1.2 语法已列在下面:

<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>

 

1. 用户与权限管理模块 角色管理: 学生:查看实验室信息、预约设备、提交耗材申请、参与安全考核 教师:管理课题组预约、审批学生耗材申请、查看本课题组使用记录 管理员:设备全生命周期管理、审核预约、耗材采购与分发、安全检查 用户操作: 登录认证:统一身份认证(对接学号 / 工号系统,模拟实现),支持密码重置 信息管理:学生 / 教师维护个人信息(联系方式、所属院系),管理员管理所有用户 权限控制:不同角色仅可见对应功能(如学生不可删除设备信息) 2. 实验室与设备管理模块 实验室信息管理: 基础信息:实验室编号、名称、位置、容纳人数、开放时间、负责人 功能分类:按学科(计算机实验室 / 电子实验室 / 化学实验室)标记,关联可开展实验类型 状态展示:实时显示当前使用人数、设备运行状态(正常 / 故障) 设备管理: 设备档案:名称、型号、规格、购置日期、单价、生产厂家、存放位置、责任人 全生命周期管理: 入库登记:管理员录入新设备信息,生成唯一资产编号 维护记录:记录维修、校准、保养信息(时间、内容、执行人) 报废处理:登记报废原因、时间,更新设备状态为 "已报废" 设备查询:支持按名称、型号、状态多条件检索,显示设备当前可用情况 3. 预约与使用模块 预约管理: 预约规则:学生可预约未来 7 天内的设备 / 实验室,单次最长 4 小时(可设置) 预约流程:选择实验室→选择设备→选择时间段→提交申请(需填写实验目的) 审核机制:普通实验自动通过,高危实验(如化学实验)需教师审核 使用记录: 签到 / 签退:到达实验室后扫码签到,离开时签退,系统自动记录实际使用时长 使用登记:填写实验内容、设备运行情况(正常 / 异常),异常情况需详细描述 违规管理:迟到 15 分钟自动取消预约,多次违规限制预约权限 4. 耗材与安全管理模块 耗材管理: 耗材档案:名称、规格、数量、存放位置、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值