文档章节

Web服务

bapleliu
 bapleliu
发布于 2015/04/29 09:55
字数 2060
阅读 6
收藏 0
点赞 0
评论 0

Web服务是一种服务导向架构的技术,通过标准的Web协议提供服务,目的是保证不同平台的应用服务可以互操作。

根据W3C的定义,Web服务(Web  service)应当是一个软件系统,用以支持网络间不同机器的互动操作。网络服务通常是许多应用程序接口API)所组成的,它们透过网络,例如国际互联网(Internet)的远程服务器端,执行客户所提交服务的请求。

尽管W3C的定义涵盖诸多相异且无法介分的系统,不过通常我们指有关于主从式架构(Client-server)之间根据SOAP协议进行传递XML格式消息。无论定义还是实现,WEB服务过程中会由服务器提供一个机器可读的描述(通常基于WSDL)以辨识服务器所提供的WEB服务。另外,虽然WSDL不是SOAP服务端点的必要条件,但目前基于Java的主流WEB服务开发框架往往需要WSDL实现客户端的源代码生成。一些工业标准化组织,比如WS-I,就在WEB服务定义中强制包含SOAP和WSDL。

目录

 [隐藏

定义[编辑]

核心定义[编辑]

考虑到并没某个独立文档包含一切相关内容,可采用模块化的方式给出对WEB服务的描述,但不能给出一个“绝对全面和准确”的定义。受外部环境和实现技术影响,各方给出的核心定义可能稍有出入,但通常包括:

  • WSDL

  • 一个XML格式文档,用以描述服务端口访问方式和使用协议的细节。通常用来辅助生成服务器和客户端代码及配置信息。

  • UDDI

  • 一个用来发布和搜索WEB服务的协议,应用程序可借由此协议在设计或运行时找到目标WEB服务。

这些标准由这些组织制订:W3C负责XML、SOAP及WSDL;OASIS英语OASIS (organization))负责UDDI。

协议集[编辑]

为提高WEB服务间的互操作能力,WS-I还特别发布了WEB服务协议集(Profile)。协议集包含了一系列特定版本的核心定义(诸如SOAP和WSDL),以及对其使用上的限制与约束。WS-I还发布了用于部署协议集兼容WEB服务的测试工具及相关用例。

WS-系列追加定义[编辑]

为扩展WEB服务能力,一些新的标准已经或正在被开发。这些标准通常被冠以WS字头(Web  Service的简称),以下是一个WS系列追加标准的不完全列表:

  • WS安全(WS-Security)

  • 定义了如何在SOAP中使用XML加密或XML签名来保护消息传递。可作为HTTPS保护的一种替代或扩充。

  • WS信赖性(WS-Reliability)

  • 一个来自OASIS的标准协议,用来提供可信赖的WEB服务间消息传递。

  • WS可信赖消息(WS-ReliableMessaging)

  • 同样是一个提供信赖消息的协议,由Microsoft, BEA 和IBM发布。目前OASIS正对其实施标准化工作。

  • WS寻址(WS-Addressing)

  • 定义了在SOAP消息内描述发送/接收方地址的方式。

  • WS事务(WS-Transaction)

  • 定义事务处理方式。

一直以来,W3C负责制定了不少WS追加定义,但近来此举开始受到怀疑。一些人呼吁W3C作为网络和语义网构建者应当把精力放在核心网络本身,而不是为WEB服务改换版本。特别是2007年2月的企业级WEB服务论坛上,对W3C不再充当WEB服务定义者的诉求开始表面化。  此外,OASIS对WEB服务扩展实施了许多标准化工作。包括WEB服务资源框架以及WSDM

使用WEB服务的方式[编辑]

WEB服务实际上是一组工具,并有多种不同的方法调用之。三种最普遍的手段是:远程过程调用(RPC),服务导向架构(SOA)以及表述性状态转移(REST)。

远程过程调用[编辑]

主条目:远程过程调用

WEB服务提供一个分布式函数方法接口供用户调用,这是一种比较传统的方式。通常,在WSDL中对RPC接口进行定义(类似于早期的XML-RPC)。

尽管最初的WEB服务广泛采用RPC方式部署,但针对其过于紧密之耦合性的批评声也随之不断。这是因为RPC式WEB服务实质上是利用一个简单的映射,以把用户请求直接转化成为一个特定语言编写的函数或方法。如今,多数服务提供商认定此种方式在未来将难有作为,在他们的推动下,WS-I基本协议集(WS-I  Basic Profile)已不再支持远程过程调用。

服务导向架构[编辑]

主条目:服务导向架构

现在,业界比较关注的是遵从服务导向架构(Service-oriented  architecture,SOA)概念来构筑WEB服务。在服务导向架构中,通讯由消息驱动,而不再是某个动作(方法调用)。这种WEB服务也被称作面向消息的服务。

SOA式WEB服务得到了大部分主要软件供应商以及业界专家的支持和肯定。作为与RPC方式的最大差别,SOA方式更加关注如何去连接服务而不是去特定某个实现的细节。WSDL定义了联络服务的必要内容。

表述性状态转移[编辑]

主条目:REST

表述性状态转移式(Representational state  transfer,REST)WEB服务类似于HTTP或其他类似协议,它们把接口限定在一组广为人知的标准动作中(比如HTTP的GET、PUT、DELETE)以供调用。此类WEB服务关注与那些稳定的资源的互动,而不是消息或动作。

此种服务可以通过WSDL来描述SOAP消息内容,通过HTTP限定动作接口;或者完全在SOAP中对动作进行抽象。

批评[编辑]

一些人抱怨,WEB服务(具象化状态转移式除外)过于复杂,认为它太过于偏重那些大型软件开发商,而不利于开源项目。但是至今不少开发工具已经具备自动化产生具象物件,已经减少web服务的调用难度。例如Microsoft  visual studio、eclipse 等等IDE工具。使用者只需要专注于调用与实行。


WEB服务的性能也时常是人们关注的一个问题。由于使用XML作为消息格式,并以SOAP封装,由HTTP传输,WEB服务始终处于较高的开销状态。不过目前一些新兴技术正在试图解决此一问题,诸如新的XML处理模型致力于解决XML这一部分的性能。

类似方式[编辑]

无论是在WEB服务出现以前,还是现在,一直不断有各种同类技术问世。比如,RMI作为这样一种中间件系统就得到了广泛部署。CORBADCOM则更加雄心壮志,两者都尝试将作用域波及到分布式对象,这一点也为WEB服务所模仿。

这些类似方式往往借助于XML-RPC和HTTP本身,而不依靠SOAP封装参数。

外部链接[编辑]

参见[编辑]

取自“http://zh.wikipedia.org/w/index.php?title=Web服务&oldid=34099523”    分类


© 著作权归作者所有

共有 人打赏支持
bapleliu
粉丝 1
博文 21
码字总数 68807
作品 0
青岛
高级程序员
webservice简介

webservice通过SOAP在web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。 相关概念 XML:面向短期的临时数据处理、面向万维网络,SOAP的基础; SOAP:webservice的通信协议,用...

绿林小子 ⋅ 2015/11/04 ⋅ 0

一些常用的WebServices

一些常用Web服务, http://www.webxml.com.cn/zhcn/webservices.aspx 有更多的web服务,可以去找找,下面列举一部分 天气预报Web服务,数据来源于中国气象局 Endpoint Disco WSDL IP地址来源...

孟宪迎 ⋅ 2009/12/27 ⋅ 0

Java Web 服务性能优化实践

简介: 本文介绍如何提升 Java Web 服务性能,主要介绍了三种方法:一是采用 Web 服务的异步调用,二是引入 Web 服务批处理模式,三是压缩 SOAP 消息。重点介绍在编程过程中如何使用异步 We...

IBMdW ⋅ 2012/12/21 ⋅ 2

发布与调用 Web 服务还能再简化吗?

本文是《轻量级 Java Web 框架架构设计》的系列博文。 在 Java 6 以后,发布与调用 Web 服务是一件非常简单的事情,只需使用 JAX-WS(Java API for XML-based Web Services)即可,它也是 JS...

黄勇 ⋅ 2013/11/22 ⋅ 3

一些常用的WebServices 天气,IP,邮编,Email,火车时刻表,股票 等等

天气预报Web服务,数据来源于中国气象局 Endpoint Disco WSDL IP地址来源搜索 WEB 服务(是目前最完整的IP地址数据) Endpoint Disco WSDL 随机英文、数字和中文简体字 WEB 服务 Endpoint D...

长平狐 ⋅ 2013/06/17 ⋅ 1

Web Service研究分析

1 Web Service 1.1 Web Service 介绍 Web服务是一种面向服务的架构技术,通过标准的Web协议提供服务,目的是保证不同平台的应用服务可以互操作。 Web Service 是为其它应用提供数据和服务的应...

陶邦仁 ⋅ 2012/08/14 ⋅ 2

WebService与SOA的实现

14.1 Web Services和面向服务的软件架构(Service Oriented Architecture,简称SOA)概述: 在最新Java开发世界里,我们经常会遇到这样一个名词:Web Services(Web服务)。同时还会发现,与...

飓风2000 ⋅ 2014/06/12 ⋅ 2

使用 SugarCRM 的 REST 接口

REST,代表 REpresentational State Transfer,旨在成为普通精益化 Web 服务协议。它的出现是对 SOAP 和 XML-RPC 等重量级 Web 服务协议的响应,这些重量级的 Web 服务协议依赖于一种预定义的...

小编辑 ⋅ 2010/02/26 ⋅ 0

使用Piranha搭建lvs与web在同一台服务器如何实现?

两台服务器搭建lvs,后端是web服务。要求 lvs1+web1在同一台服务器(两块网卡,eth0绑定lvs1服务,eth1绑定web1服务) lvs2+web2在同一台服务器(两块网卡,eth0绑定lvs2服务,eth1绑定web2服...

LionelShen ⋅ 2013/12/30 ⋅ 2

使用ASP.Net 3.5 的Ajax与Web服务开发实例

本文继续介绍使用ASP.NET3.5中的AJAX环境中如何从客户端JavaScript调用Web服务方法。编写本文的目的在于让大家深刻了解基于ASP.Net3.5的Ajax和Web的服务,虽然例子比较简单,但是比较能说明问...

高阳 ⋅ 2009/03/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

6.1 压缩打包介绍 6.2 gzip压缩工具 6.3 bzip2压缩工具 6.4 xz压缩工具

压缩打包介绍 使用压缩工具的好处: 使用压缩文件,不仅可以节省磁盘空间,而且在传输时还能节省网络宽带。 我们通常讲的家用宽带和机房宽带100M是有区别的: 机房宽带的上行和下行都是100M,...

Linux_老吴 ⋅ 31分钟前 ⋅ 0

SpringBoot热部署加持

概述 进行SpringBoot的Web开发过程中,我们很多时候经常需要重启Web服务器才能保证修改的 源代码文件、或者一些诸如xml的配置文件、以及一些静态文件生效,这样耗时又低效。所谓的热部署指的...

CodeSheep ⋅ 38分钟前 ⋅ 0

OSChina 周六乱弹 —— 假如你被熊困到树上

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》 《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》- 谢...

小小编辑 ⋅ 今天 ⋅ 5

vbs 取文件大小 字节

dim namedim fs, s'name = Inputbox("姓名")'msgbox(name)set fs = wscript.createobject("scripting.filesystemobject") 'fs为FSO实例if (fs.folderexists("c:\temp"))......

vga ⋅ 今天 ⋅ 1

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部