说到webservice不得不提到WSDL和SOAP两个概念。
首先我们来说说WSDL,它是干嘛用的呢?
WSDL 是一种使用 XML 编写的文档。这种文档可描述某个 Web service。它可规定服务的位置,以及此服务提供的操作(或方法)。
WSDL文档结构
元素 定义
<portType> web service 执行的操作
<message> web service 使用的消息
<types> web service 使用的数据类型
<binding> web service 使用的通信协议
元素 | 定义 |
<portType> | web service 执行的操作 |
<message> | web service 使用的消息 |
<types> | web service 使用的数据类型 |
<binding> | web service 使用的通信协议 |
WSDL端口
<portType>元素描述了一个webservice、可被执行的操作,以及相关的消息。
可以把它比作传统编程语言中的一个函数库(或一个模块、或一个类)。
WSDL消息
<message>元素定义了一个操作的数据元素。
每个消息均由一个或者多个部件组成。可以把这些部件比作传统编程语言中一个函数调用的参数。
WSDL types
<types>元素定义了webservice使用的数据类型。
为了最大程度的平台中立性,WSDL使用XML Schema语法来定义数据类型。
WSDL Bindings
<binding>元素为每个端口定义消息格式和协议细节。
eg.
WSDL实例
<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>
说明:该例子中,<portType>元素把"glossaryTerms"定义为某个
端口的名称,把"
getTerm"定义为某个
操作的名称。
操作"getTerm"拥有一个名为"getTermRequest"的
输入消息,以及一个名为"getTermResponse"的
输出消息。
<message>元素定义每个消息的部件,以及相关联的数据类型。
这里,glossaryTerms就是一个类(函数库),而"getTerm"是带有输入参数"getTermRequest"和返回参数"getTermResponse"的一个函数。
SOAP又是什么呢?
- SOAP 指简易对象访问协议
- SOAP 是一种通信协议
- SOAP 用于应用程序之间的通信
- SOAP 是一种用于发送消息的格式
- SOAP 被设计用来通过因特网进行通信
- SOAP 独立于平台
- SOAP 独立于语言
- SOAP 基于 XML
- SOAP 很简单并可扩展
- SOAP 允许您绕过防火墙
- SOAP 将被作为 W3C 标准来发展
简单的说,SOAP是简易对象之间相互访问的通讯协议。
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>
...
...
</soap:Header>
<soap:Body>
...
...
<soap:Fault>
...
...
</soap:Fault>
</soap:Body>
</soap:Envelope>
SOAP Envelope元素
必须的有的。Envelope元素是SOAP消息的根元素。它可把XML文档定义为SOAP消息。
SOAP Header元素
可选的,该元素可包含有关SOAP消息的应用程序专用信息(比如认证,支付等)。如果H饿啊der元素被提供,则它必须是Envelope元素的第一个子元素。
SOAP Body元素
必须的,该元素可包含打算传送到消息最终端点的实际SOAP消息。
SOAP Fault 元素
可选的 SOAP Fault 元素用于指示错误消息。
如果已提供了 Fault 元素,则它必须是 Body 元素的子元素。在一条 SOAP 消息中,Fault 元素只能出现一次。
那么WSDL如何和SOAP进行绑定呢?
eg.绑定到SOAP
<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>
<binding type="glossaryTerms" name="b1">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<operation>
<soap:operation
soapAction="http://example.com/getTerm" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
binding元素有两个属性"name"和"type"属性。
name属性定义了binding的名称,而type属性指向用于binding的端口(即portType端口)。
soap:binding元素有两个属性"style"和"transport"。
style属性可取值"rpc"或者"document"。transport属性定义了要使用的SOAP协议。
operation元素定义了每个端口提供的操作符。
分享到:
相关推荐
**XFire初识:使用Eclipse开发WebService** 在IT行业中,WebService是一种允许应用程序之间进行交互的标准化技术。它通过XML(可扩展标记语言)来交换数据,使得不同平台上的应用能够无缝对接。XFire是Java平台上一...
【WebService详解:初识与实现】 在IT行业中,Web服务是一种允许不同系统之间进行通信和交换数据的标准方式。尤其在分布式应用系统中,WebService扮演着关键角色。本项目以"webservice 第一个小项目"为主题,将带你...
初识分布式架构与意义 如何把应用从单机扩展到分布式 大型分布式架构演进过程 分布式架构设计 主流架构模型-SOA架构和微服务架构 领域驱动设计及业务驱动规划 分布式架构的基本理论CAP、BASE以及其应用 什么...
第1章 Android初识 1.1 Android简介 1.1.1 认识Android 1.1.2 Android系统框架 1.1.3 应用程序框架 1.2 Eclipse开发环境 1.2.1 安装ADT插件 1.2.2 安装SDK 1.2.3 配置源代码 1.2.4 创建AVD 1.3 Android模拟器 1.3.1 ...
第五阶段: 初识⼤数据 1. 难易程度:三颗星 2. 课时量(技术知识点+阶段项⽬任务+综合能⼒):80课时 3. 主要技术包括:⼤数据前篇(什么是⼤数据,应⽤场景,如何学习⼤数据库,虚拟机概念和安装等)、Linux常见...