Web Service 简介
最近使用ODI的工具箱中的ODIInvokeWebService。因此简单了解下WebService的理论知识。
一、Web Service 简介
Web Service就是可编程的URL,使用标准的Internet协议(比如HTTP或 XML)远程可调用的应用程序组件。
二、为什么使用 Web Service?
本质:以标准化的方式实现企业内外各个不同服务系统之间的互调或者集成。
Web Service技术,能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。
Web Service减少了应用接口的花费。为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
三、Web Service的3个要素
- SOAP (简易对象访问协议)
- UDDI (通用描述、发现及整合)
- WSDL (Web Service 描述语言)
假如服务A要远程调用服务B上的服务
1、服务B要用一种标准化的语言 (WSDL)告诉服务A能提供什么样的服务,以及如何调用它的服务,它的服务在那里,这称为Web Service的服务描述 (what、how、where)
2、服务A要以一种标准化的通信消息格式(SOAP)告诉服务B, 它想调用什么服务并加入相应的输入参数等,当服务B完成服务后,会同样以标准化的通信方式告诉A相应的服务结果,这是Web Service的服务消息的 request和response。
3、服务B要注册到相应的公共网址,以便外部能找到,是URL部分。(UDDI)
3.1、SOAP
什么是 SOAP?HTTP + XML = SOAP
SOAP采用了已经广泛使用的两个协议:HTTP 和XML(标准通用标记语言下的一个子集)。HTTP用于实现 SOAP 的RPC 风格的传输, 而XML 是它的编码模式。
- SOAP 指简易对象访问协议
- SOAP 是一种通信协议
- SOAP 用于应用程序之间的通信
- SOAP 是一种用于发送消息的格式
- SOAP 被设计用来通过因特网进行通信
- SOAP 独立于平台
- SOAP 独立于语言
- SOAP 基于 XML
- SOAP 很简单并可扩展
- SOAP 允许您绕过防火墙
- SOAP 将被作为 W3C 标准来发展
Why SOAP?
对于应用程序开发来说,使程序之间进行因特网通信是很重要的。
目前的应用程序通过使用远程过程调用(RPC)在对象之间进行通信,但是 HTTP 不是为此设计的。RPC 会产生兼容性以及安全问题;防火墙和代理服务器通常会阻止此类流量。
通过 HTTP 在应用程序间通信是更好的方法,因为 HTTP 得到了所有的因特网浏览器及服务器的支持。SOAP 就是被创造出来完成这个任务的。
SOAP 提供了一种标准的方法,使得运行在不同的操作系统并使用不同的技术和编程语言的应用程序可以互相进行通信。
SOAP 消息的基本结构
一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:
- 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
- 可选的 Header 元素,包含头部信息
- 必需的 Body 元素,包含所有的调用和响应信息
- 可选的 Fault 元素,提供有关在处理此消息所发生错误的信息
<?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>
可以使用 SoapUI 或在ODI ODIInvokeWebService属性 XML请求 选项查看生成的soap请求消息
WSDL(网络服务描述语言,Web Service Description Language)是一门基于 XML 的语言,用于描述 Web Service 以及如何对它们进行访问。
3.2.1 WSDL 文档结构
一个基本的WSDL文档包含7个重要的元素:
-
Types - 数据类型定义的容器,它使用某种类型系统(一般地使用XML Schema中的类型系统)。
-
Message - 通信消息的数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构。
-
Operation - 对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对。
-
PortType - 对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持。
-
Binding - 特定端口类型的具体协议和数据格式规范的绑定。
-
Port - 定义为协议/数据格式绑定与具体Web访问地址组合的单个服务访问点。
-
Service- 相关服务访问点的集合。
WSDL types
types元素定义 Web Service 使用的数据类型。为了最大程度的平台中立性,WSDL 使用 XML Schema 语法定义在文档中的其他位置使用的复杂数据类型与元素;
WSDL import
import元素类似于XML模式文档中的import元素,用于从其他WSDL文档中导入WSDL定义;
WSDL message
message元素使用在WSDL文档的type元素中定义或在import元素引用的外部WSDL文档中定义的XML模式的内置类型、复杂类型或元素描述了消息的有效负载;<message> 元素定义一个操作的数据元素。每个消息均由一个或多个部件组成。可以把这些部件比作传统编程语言中一个函数调用的参数。
WSDL Bindings
Binding元素将portType元素和operation元素赋给一个特殊的协议和编码样式;<binding> 元素为每个端口定义消息格式和协议细节。
WSDL Service
service元素负责将Internet地址赋给一个具体的绑定;
WSDL Operation
Operation - 对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对。operation元素使用一个或者多个message类型来定义他的输入和输出的有效负载;类似于java接口中定义的方法声明
WSDL portType
<portType>它可描述一个 Web Service、可被执行的操作,以及相关的消息。portType元素和operation元素描述了Web服务的接口并定义了他的方法。可以把该portType比作传统编程语言中的一个函数库(或一个模块、或一个类),而把每个操作比作传统编程语言中的一个函数。
3.3、UUID
UDDI,英文为 "Universal Description, Discovery and Integration",可译为“通用描述、发现与集成服务”。
UDDI是一种目录服务,企业可以使用它对 Web Service 进行注册和搜索。
UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。
参考文档
WSDL 详解 详细介绍了WSDL的结构,并附了例子