Web Service Notes

Web services是一项流行的新技术, 也是未来电子商务的发展趋势,它使用标准方式封装现有业务逻辑或开发新的逻辑,使其成为服务实体并发布到网络上以供其它应用调用, 其它公司或应用软件能够通过Internet来访问并使用这项在线服务。它允许在Web站点上放置可编程的元素,使得能进行基于Web的分布式计算和处理。

    Web services是一个基于因特网的应用程序模块,在遵守由一个协议集组成的特殊的技术格式下进行对象组件之间的远程互连交互。包括数据怎么表示,数据怎么传输,Web服务怎么描述,信息怎样获取。这样的描述太抽象, 具体一下,在Web服务中,XML是数据的格式,SOAP是调用Webservices的协议,WSDL是描述Web服务的格式,而UDDI是Web服务登记,查找和利用的组合。四个方面组成了整个Web服务架构。

SOAP(Simple Object Access Protocol)

    简单对象访问协议(SOAP)是在分散或分布式的环境中交换信息的简单的协议规范,是一个基于XML的协议,它包括四个部分:SOAP封装,封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例; SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定;SOAP绑定(binding),使用底层协议交换信息。

WSDL(Web services Description Language)

    WEB服务描述语言(WSDL)描述了一个Web services,它定义了一套基于 XML的语法,将Web services描述为能够进行消息交换的服务访问点的集合。

UDDI(Universal Description Discovery and Integration)

    统一描述、发现和集成协议(UDDI)是一套基于WEB的、分布式的、为Web services提供的信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Services注册以使得别的企业能够发现的访问协议的实现。如果通俗一点说,可以把他看成是一个将来商业注册中心的标准。

  Web services除了标准化、界面与实现分离、实现中立的优势外, 本人认为它的一个重要用途就体现在Web services能很好的解决各个旧有系统之间存在的信息孤岛的问题, 随着交易中间件,消息中间件,应用服务器中间件等中间件产品的日益普及,基于Web services的中间件也浮出水面。基于Web services的中间件的集成将改变目前的开发模式和应用部署的费用规模,加速电子商务的进程。

XFire 概述

XFire 是 codeHaus 组织提供的一个开源框架,它构建了 POJO 和 SOA 之间的桥梁,主要特性就是支持将 POJO 通过非常简单的方式发布成 Web 服务,这种处理方式不仅充分发挥了 POJO 的作用,简化了 Java 应用转化为 Web 服务的步骤和过程,也直接降低了 SOA 的实现难度,为企业转向 SOA 架构提供了一种简单可行的方式。

        XFire是完全基于流数据处理进行工作的系统,这意味着XFire不是将整个SOAP文档缓存在内存中,而是以管道的方式接收SOAP流数据。这种工作方式的转变带来了可观的性能回报,同时节省了内存的占用。
        XFire从管道中接收一个SOAP请求到返回一个SOAP响应,会经历一系列的阶段。在管道调用的任何一个阶段,XFire都可以添加一些额外的Handler,在对消息进行加工处理后再传入到下一个阶段中。在SOAP请求消息对Web Service发起真正调用之前,分别会经过传输、预转发、转发、策略实施、用户信息处理、预调用、服务调用等阶段。

更多XFire相关的介绍请看后续章节...

Axis 概述

Axis(Apache extensible Interaction system)是Apache项目组织的一个开源项目。前身是Apache SOAP,它通过如下方法来扩展了soap2.0的功能:

1.      定义一个消息处理节点。Axis消息处理节点是一个服务提供者或者服务请求者引擎,帮助对XML消息的处理。

2.      支持XML协议。

3.      为像Listener, Router,Serializer/De-serializer,Dispatcher和Handler传输对象那样的组件提供一个可插入的框架。

AXIS的关键功能和优势表现在速度(早期的SOAP的分析机制是基于DOM的,而AXIS是基于SAX的),灵活性(提供了在引擎中插入新扩展的功能,可以对头部信息的处理和系统管理进行定制,在WSDD中对服务,Handler对象和串行并行程序进行描述),面向组件展开(引入了链接chainable和Handler的概念),传输框架(SOAP可以建立在SMTP, FTP, HTTP等多种传输层协议上)。

更多Axis相关介绍请看后续章节...

CXF 概述

Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF了,以下简称为 CXF。CXF继承了Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。目前它仍只是 Apache 的一个孵化项目。

Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS 。这些 Services 可以支持多种协议,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,并且可以在多种传输协议上运行,比如:HTTP、JMS 或者 JBI,CXF 大大简化了 Services 的创建,同时它继承了 XFire 传统,一样可以天然地和 Spring 进行无缝集成。

更多Axis相关介绍请看后续章节...

Axis/XFire/CXF 比较:

XFire与Axis2相比具有如下特征:

    支持一系列Web Service的新标准--JSR181、WSDL2.0 、JAXB2、WS-Security等;
    使用Stax解释XML,性能有了质的提高。XFire采用Woodstox 作Stax实现;
    容易上手,可以方便快速地从pojo发布服务,Axis2并不是pojo形式,XFire确实比Axis2简单很多
    支持Spring、Pico、Plexus、Loom等容器;
    灵活的Binding机制,包括默认的Aegis,xmlbeans,jaxb2,castor;
    高性能的SOAP 栈设计;
    支持Spring、Pico、Plexus、Loom等容器。

XFire与Axis1性能的比较如下:

    XFire比Axis1.3快2-6倍;
    XFire的响应时间是Axis1.3的1/2到1/5。

CXF与Axis,XFire:

    CXF支持 WS-Addressing,WS-Policy, WS-RM, WS-Security和WS-I Basic Profile。Axis2不支持WS-Policy,但是承诺在下面的版本支持;
   CXF可以很好支持Spring。可以通过注解、Spring标签式配置来暴露Web Services和消费Web Services, Axis2不能;
    AXIS2支持更广泛的数据并对,如XMLBeans,JiBX,JaxMe和JaxBRI和它原生的 data binding(ADB)。CXF只支持JAXB和Aegis,CXF目前仅支持 JAXB 和 Aegis,并且默认是 JAXB 2.0,与 XFire 默认支持 Aegis;
    Axis2支持多语言-除了Java,他还支持C/C 版本。

Axis2允许自己作为独立的应用来发布Web Service,并提供了大量的功能和一个很好的模型,这个模型可以通过它本身的架构(modular architecture)不断添加新的功能。有些开发人员认为这种方式对于他们的需求太过于繁琐。这些开发人员会更喜欢CXF。

CXF更注重开发人员的工效(ergonomics)和嵌入能力(embeddability)。大多数配置都可以API来完成,替代了比较繁琐的XML配置文件, Spring的集成性经常的被提及,CXF支持Spring2.0和CXF's API和Spring的配置文件可以非常好的对应。CXF强调代码优先的设计方式(code-first design),使用了简单的API使得从现有的应用开发服务变得方便。

不过你选择Axis2还是CXF,你都可以从开源社区得到大量的帮助。这两个框架都有商业公司提供服务,WSO2提供AXIS2的支持,Iona提供CXF的支持。这两公司都有很活跃的开发者社区。 Axis2出现的时间较早,CXF的追赶速度快。我的建议是:如果你需要多语言的支持,你应该选择AXIS2。如果你需要把你的实现侧重JAVA并希望和Spring集成,CXF就是更好的选择,特别是把你的Web Service嵌入其他的程序中。如果你觉得这两个框架的新特性对于你并没有太大的用处,你会觉得Axis1也是不错的选择,你应该继续使用它知道你有充分的理由去更换它。

如何抉择:
1、如果应用程序需要多语言的支持,Axis2 应当是首选了;
2、如果应用程序是遵循 Spring 哲学路线的话,Apache CXF 是一种更好的选择,特别对嵌入式的 Web Services 来说;
3、如果应用程序没有新的特性需要的话,就仍是用原来项目所用的框架,比如 Axis1,XFire,Celtrix 或 BEA 等等厂家自己的 Web Services 实现,就别劳民伤财了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值