最近使用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请求消息

一个 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比作传统编程语言中的一个函数库(或一个模块、或一个类),而把每个操作比作传统编程语言中的一个函数。

WSDL 例子

3.3、UUID

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

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

UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。

参考文档

WSDL 详解详细介绍了WSDL的结构,并附了例子

Web 服务编程,REST 与 SOAP

可供测试的在线webservice

Web Service 简介的更多相关文章

  1. SAP Web Service简介与配置方法

    [版权声明]本文为博主原创文章,转载请在明显位置注明出处. 一. SAP Web Service简介 二. SAP Web Service配置准备工作 1. 通过RZ10配置服务器名称和其他参数 2. ...

  2. Web Service简介与开发实例

    简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的 ...

  3. C# Web Service简介及使用

    一. 软件开发的形式 1.SaaS:Software as a Service(软件即服务) (1)将软件视为一种基础设施与服务 (2)网络无所不在,网络可以看成是一个软件服务的聚合体,是一个超级大& ...

  4. Web Service简介 内部资料 请勿转载 谢谢合作

    1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求, ...

  5. 使用Web Service进行网络编程-----Web Service简介

    Android应用通常都是运行在手机平台上,手机系统的硬件资源是有限的,不管是存储能力还是计算能力都是有限的,在Android系统上开发.运行一些单用户.小型应用是可能的,但对于需要进行大量的数据处理 ...

  6. Web Service简介(一)

    这篇博文,我们对Web Service进行一个简单的介绍和认识,作为Web Service的入门.在学习之前,你需要对HTML和XML有基本的了解,Web Service并不难,而且非常的简单. 什么 ...

  7. Web Service简介

    1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求, ...

  8. Web service简介 与servletContext的参数

    Web service顾名思义是基于web的服务,它是一种跨平台,跨语言的服务. 我们可以这样理解它,比如说我们可以调用互联网上查询天气信息的web服务,把它嵌入到我们的B/S程序中,当用户从我们的网 ...

  9. (转)Web Service入门简介(一个简单的WebService示例)

    Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...

随机推荐

  1. 代码实现Android5.0的下拉刷新效果

    如图所示,实现类似与gmail的下拉刷新. 项目地址:https://github.com/stormzhang/SwipeRefreshLayoutDemo 一.在xml文件中定义 这个控件在sup ...

  2. Eclipse中的特殊注释:TODO、XXX、FIXME

    特殊注释: 1. TODO表示需要实现,但目前还未实现的功能 2 .XXX勉强可以工作,但是性能差等原因 3 .FIXME代码是错误的,不能工作,需要修复 TODO: + 说明:如果代码中有该标识,说 ...

  3. Swift: Swift中Selector的变化

    Swift中Selector变化 2.2 之前,使用字符串作为方法名称 //无参数 btn.addTarget(self, action: Selector("buttonPress&quo ...

  4. Pytorch多GPU并行处理

    可以参数2017coco detection 旷视冠军MegDet: MegDet 与 Synchronized BatchNorm PyTorch-Encoding官方文档对CGBN(cross g ...

  5. 配置Tomcat apr运行模式

    tomcat中一共有三种运行模式,分别是:bio,nio,apr bio是阻塞式IO操作,使用的是传统的java i/o处理方式,对于每一个请求都要创建一个线程来进行处理,所以开销较大不适合处理高并发 ...

  6. Java 读取某个目录下所有文件、文件夹

    /** * @Author: * @Description:获取某个目录下所有直接下级文件,不包括目录下的子目录的下的文件,所以不用递归获取 * @Date: */ public static Lis ...

  7. win7下使用Taste实现协同过滤算法

    如果要实现Taste算法,必备的条件是: 1) JDK,使用1.6版本.需要说明一下,因为要基于Eclipse构建,所以在设置path的值之前要先定义JAVA_HOME变量. 2) Maven,使用2 ...

  8. c#:对两个字符串大小比较(不使用c#/java内部的比较函数),按升序排序

    题目:首先需要实现一个函数:两个字符串大小比较(不得使用c#/java系统函数)的自定义函数:之后对一个字符串数据进行按升序排序(在排序过程中使用字符串大小比较时,使用自定义的字符串大小比较函数). ...

  9. Eclipse小技巧:收起outline的头文件

  10. ElasticSearch无法启动

    安装了ElasticSearch5.5.1后,每次启动服务的时候,都是启动了一下就自动停止了.查看了一下EventViewer, 错误信息如下: Application: elasticsearch. ...