Web Service研究分析

1         Web Service

1.1     Web Service 介绍

Web服务是一种面向服务的架构技术,经过标准的Web协议提供服务,目的是保证不一样平台的应用服务能够互操做。php

Web Service 是为其它应用提供数据和服务的应用逻辑单元,应用程序经过标准的Web 协议和数据格式得到Web Service,如HTTP XML SOAP 等,每一个Web Service 的实现是彻底独立的。html

简单地讲,Web 服务是一个URL 资源,客户端能够经过编程方式请求获得它的服务,而不须要知道所请求的服务是怎样实现的,这一点与传统的分布式组件对象模型不一样。java

 

例如:不少大的站点提供有天气预报的webservice、查询某网站的数据的webservice,只要你发送请求过来,它就返回天气预报、某网站的数据,而后你把结果显示处来。web

 

 

Ø  核心定义:spring

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

命名空间:其主要目的经过加一个命名属性,使名称保持惟一性。WSDL有大量的使用安全

命名空间的地方。本质上WSDL是一个XML文件,做为一个XML文件,为了区别同名的元素,就须要采用命名空间的概念。服务器

SOAP:简单对象访问协议,一个基于XML的可扩展消息信封格式,需同时绑定一个传输用协议。这个协议一般是HTTPHTTPS,但也多是SMTPXMPP,用于网络上,不一样平台,不一样语言的应用程序间的通信。可自定义,易于扩展。网络

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

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

 

Ø  协议集:

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):定义事务处理方式。

 

Web Service = SOAP + HTTP + WSDL。其中,SOAP Simple Object Access Protocol)协议是web service的主体,它经过HTTP或者SMTP等应用层协议进行通信,自身使用XML文件来描述程序的函数方法和参数信息,从而完成不一样主机的异构系统间的计算服务处理。这里的WSDLWeb Services Description Languageweb 服务描述语言也是一个XML文档,它经过HTTP向公众发布,公告客户端程序关于某个具体的 Web service服务的URL信息、方法的命名,参数,返回值等。

1.2     Web Service 方式

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

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

 

面向服务架构(SOA):如今,业界比较关注的是听从面向服务架构(Service-oriented architectureSOA)概念来构筑WEB服务。在面向服务架构中,通信由消息驱动,而再也不是某个动做(方法调用)。这种WEB服务也被称做面向消息的服务。SOAWEB服务获得了大部分主要软件供应商以及业界专家的支持和确定。做为与RPC方式的最大差异,SOA方式更加关注如何去链接服务而不是去特定某个实现的细节。WSDL定义了联络服务的必要内容。

 

表述性状态转移(REST):表述性状态转移式(Representational state transferRESTWEB服务相似于HTTP或其余相似协议,它们把接口限定在一组广为人知的标准动做中(好比HTTPGETPUTDELETE)以供调用。此类WEB服务关注与那些稳定的资源的互动,而不是消息或动做。此种服务能够经过WSDL来描述SOAP消息内容,经过HTTP限定动做接口;或者彻底在SOAP中对动做进行抽象。

 

1.3     Web Service 优点

Ø  可操做的的分布式应用程序;

Ø  广泛性、使用HTTPXML进行通讯;

Ø  Web Service 甚至能够穿越防火墙,真正的自由通讯;

Ø  经过 SOAP 协议实现异地调用;

Ø  Service 组件易复用,易集成;

2         Web Service 运行原理

Web 服务有两层含义:1、是指封装成单个实体并发布到网络上的功能集合体;2、是指功能集合体被调用后所提供的服务。

 

Web 服务的体系结构是基于Web 服务提供者、Web 服务请求者、Web 服务中介者三个角色和发布、发现、绑定三个动做构建的。简单地说,Web 服务提供者就是Web 服务的拥有者,它耐心等待为其余服务和用户提供本身已有的功能;Web 服务请求者就是Web 服务功能的使用者,它利用SOAP 消息向Web 服务提供者发送请求以得到服务;Web 服务中介者的做用是把一个Web 服务请求者与合适的Web 服务提供者联系在一块儿,它充当管理者的角色,通常是UDDI 。这三个角色是根据逻辑关系划分的,在实际应用中,角色之间极可能有交叉:一个Web 服务既能够是Web 服务提供者,也能够是Web 服务请求者,或者两者兼而有之。显示了Web 服务角色之间的关系: 其中,发布是为了让用户或其余服务知道某个Web 服务的存在和相关信息; “查找(发现)是为了找到合适的Web 服务; “绑定则是在提供者与请求者之间创建某种联系。

 

3         Web Service 实现机制

Web 服务提供者设计实现Web 服务,并将调试正确后的Web 服务经过Web 服务中介者发布,并在UDDI 注册中心注册 (发布)

 

Web 服务请求者向Web 服务中介者请求特定的服务,中介者根据请求查询 UDDI 注册中心,为请求者寻找知足请求的服务; (发现)

 

Web 服务中介者向Web 服务请求者返回知足条件的Web 服务描述信息,该描述信息用WSDL 写成,各类支持Web 服务的机器都能阅读;(发现)

 

利用从Web 服务中介者返回的描述信息生成相应的SOAP 消息,发送给Web 服务提供者,以实现Web 服务的调用;(绑定)

 

Web 服务提供者按SOAP 消息执行相应的Web 服务,并将服务结果返回给Web 服务请求者。(绑定)

4         Web Service 开源框架

4.1     JWS

JWSJava语言对WebService服务的一种实现,用来开发和发布服务。而从服务自己的角度来看JWS服务是没有语言界限的。只是Java语言为Java开发者提供便捷发布和调用WebService服务的一种途径。

详情见URL

Ø  JWS开发WebService

http://www.iteye.com/topic/166314

4.2     Axis2

Axis2Apache下的一个重量级WebService框架,准确说它是一个Web Services / SOAP / WSDL 的引擎,是WebService框架的集大成者,它能不但能制做和发布WebService,并且能够生成Java和其余语言版WebService客户端和服务端代码。这是它的优点所在。可是,这也不可避免的致使了Axis2的复杂性,使用过的开发者都知道,它所依赖的包数量和大小都是很惊人的,打包部署发布都比较麻烦,不能很好的与现有应用整合为一体。可是若是你要开发Java以外别的语言客户端,Axis2提供的丰富工具将是你不二的选择。

 

详情见URL

Ø  Axis2系列教程:

 

http://www.blogjava.net/nokiaguy/archive/2009/01/02/249556.html

http://www.cnblogs.com/mingzi/archive/2009/03/09/1406839.html

4.3     XFire

XFire是一个高性能的WebService框架,在Java6以前,它的知名度甚至超过了ApacheAxis2XFire的优势是开发方便,与现有的Web整合很好,能够融为一体,而且开发也很方便。可是对Java以外的语言,没有提供相关的代码工具。XFire后来被Apache收购了,缘由是它太优秀了,收购后,随着Java6 JWS的兴起,开源的WebService引擎已经再也不被看好,渐渐的都败落了。

 

详情见URL

Ø  XFire 开发WebService

http://www.doc88.com/p-59359114924.html

Ø  XFire集成Spring开发WebService

http://txswjhd.blog.163.com/blog/static/42232682200781825429353/

 

 

4.4     CXF

CXFApache旗下一个重磅的SOA简易框架,它实现了ESB(企业服务总线)CXF来自于XFire项目,通过改造后造成的,就像目前的Struts2来自WebWork同样。能够看出XFire的命运会和WebWork的命运同样,最终会淡出人们的视线。CXF不可是一个优秀的Web Services / SOAP / WSDL 引擎,也是一个不错的ESB总线,为SOA的实施提供了一种选择方案,固然他不是最好的,它仅仅实现了SOA架构的一部分。

 

详情见URL

Ø  CXF 开发WebService

http://hi.baidu.com/cpuhandou/blog/item/597dde17546ed915972b4317.html

Ø  CXF 集成Spring 开发WebService

http://tonyaction.blog.51cto.com/227462/202754

http://www.ibm.com/developerworks/cn/webservices/ws-pojo-springcxf/

4.5     Spring WS

Spring web services(如下简称:Spring WS)框架是基于契约先行(contract first),Springframework东家SpringSource公司旗下的一个子项目。

 

Spring Web Services框架的特色:

Ø  Spring框架的支持,你能够重用Spring的全部特性。

Ø  Spring WS使用Contract First(自顶向下)的设计方式。Spring WS不支持Contract Last(自底向上)

Ø  支持几乎全部的XML API,处理传入XML消息的时候就不限于JAX-P,能够是任意的XML API,选择你所擅长的。

Ø  灵活的XML Marshalling,Object/XML mapping产品的支持,包括JAX-B1,2XMLBean以及Castor等等。

Ø  Security支持,集成了Acegi.实现web services 认证。

 

详情见URL

Ø  Spring Web Service 开发:

http://www.iteye.com/topic/152556

http://arronzhen.iteye.com/blog/794482

http://www.blogjava.net/liuzheng/articles/170363.html

 

5         Web Service     总结

Web Service SOAP尽管是一种标准的传输协议,可是它毕竟是一种特殊的协议,一种特殊的技术,并不支持其它的传输协议,如RMI等,因此Web Service 仍是和特定的SOAP技术绑定在一块儿的。 经过了解IT和程序语言的发展历史,能够获得这样的一个结果,SOA是为了信息集成,而出现的一种新事物,它显然是超越的现有的一切技术,可是它又包含了全部的技术。SOA达到的一个目的就是面向服务,而这种面向服务的结果就是忽略任何与技术有关的东西,最终提供的都是服务接口。

 

其实咱们还应该搞清楚面向对象和面向组件之间的区别,面向组件和面向服务的区别,SOAweb service之间的区别?
   

面向服务和面向组件的区别在于面向组件须要和传输协议及应用服务器的端口绑定,面向服务就是要进一步对面向组件解耦,所谓解耦就是将业务组件和传输协议的端口解耦,既各类业务组件能够自由的绑定各类传输协议。 SOAweb service之间的区别是SOA是在web Service的基础上发展起来的,web service实现了松散耦合的服务和粗粒度的服务,可是web service本质上只是一个服务组件,它虽然采用的标准的协议,可是它是与应用服务器紧密相关的。
   

因此能够得出结论:SOA自己并不是什么具体的技术,也不是什么架构,它是一种思想,它超越了现有的技术和架构,可是它又包含了现有技术和架构。运用这种思想要到达的目的就是作到业务和技术的彻底分离,作到敏捷的、不受限制的信息集成。

 

对于SOA,可举如下例子:

 

有人说英语,有人说汉语,还有人说法语...Web Service说,这不利于集成..你们都来讲"世界语"—SOAPSOA说,世界语仍是语言,和特定表达方式绑定了;咱们最终要作到,你们都使用脑电波交流,最终要作到语言和表达彻底分离,作到敏捷的、不受限制的信息集成。

 

6         Web Service     术语

SOAP --    Simple Object Access  Protocol

 

WSDL --   Web Service Description Language

 

UDDI  --    Universal Description Discovery &Integration

 

JAXP  --      THE Java API for XML Processing

 

SAX  --       Simple API for XML Parsing

 

DOM  --      Document Object Model

 

SAX  --       The Simple API for XML

 

XSLT   --     THE XML Stylesheet Language for Transformations

 

JAXB  --       THE Java Architecture for XML Binding

 

JAX-RPC  -- Java API for XML-base RPC

 

RPC   --       Romote Procedure Calls

 

JAXR   --      THE Java API for XML Registries

 

Java WSDP  -- Java Web Services Developer Pack

 

JAX-WS   --     Stands for Java API for XML Web Services

相关文章
相关标签/搜索