axis,axis2及XFire简介和对比
一、axis,axis2及XFire简介(理论介绍,各自优点和缺点)
(一)Axis1 介绍
Axis1 是组织推出的 SOAP 引擎, Axis 项目是 Apache 组织著名的 SOAP 项目的后继项目, 但是Axis1不仅仅是一个SOAP引擎,它还包括:一个独立运行的SOAP服务器,一个servlet引擎的插件,这个servlet引擎可以是Tomcat,对WSDL的扩展支持,一个将WSDL的描述生成 JAVA 类的工具,还有一个监控TCP/IP包的工具。
主要特性
Axis1 优点:
Axis1 使用 SAX (event-based) 语法分析,与早期版本的 Apache SOAP 相比,速度有显著提高。
灵活性:Axis1 体系结构使开发者可以自由的向引擎中插入扩展。
稳定性:Axis1 定义了一组公共的接口。
面向组件的部署:可以简单地定义可复用的处理机网络,来实现应用程序的通用处理方式或分发给合作者。
传输框架:有一个简洁的设计传输的抽象,引擎的核心完全独立于传输。
Axis1支持WSDL1.1 ,可以简单的构建访问远程服务的桩(stub ), 还可以自动将部署的服务从Axis 导出为机器可识别的描述。
缺点:
1.Axis1 是早期出来的版本,相对于性能和速度方面不如axis2和XFire(二)Axis2 介绍
Axis2是Apache下的一个重量级WebService框架,准确说它是一个Web Services / SOAP / WSDL 的引擎,是WebService框架的集大成者。Axis2 具有模块化体系结构,由核心模块和非核心模块组成。据说,Axis2核心是纯SOAP处理引擎,并没有包含 Java™ API forXML-based RPC (JAX-RPC) 概念作为其核心的一部分。同时,Axis2体系结构的设计充分考虑了以下原则:
1.逻辑和状态分离,以提供无状态处理机制,因为 Web 服务是无状态的。
2.所有信息位于一个信息模型中,允许对系统进行挂起和恢复。
3.能够在不更改核心体系结构的情况下扩展功能,能以最小或没有核心更改的情况下 直接支持新 Web 服务规范。
Axis2 核心体系结构包括以下核心和非核心组件:核心组件 ◦ XML对象模型 (AXIOM),SOAP处理模型:处理程序框架,信息处理模型:上下文和描述,其他组件,部署模型,传输,客户机API,核心生成模型。
Axis2 优点:
它能不但能制作和发布WebService,而且可以生成Java和其他语言版WebService客户端和服务端代码
内存占用低
热部署
异步web 服务
灵活性 - Axis 体系结构使开发者可以自由的向引擎中插入扩展
稳定性 - Axis 定义了一组公共的接口。
面向组件的部署 - 可以简单地定义可复用的处理机网络,来实现应用程序的通用处理方式 或分发给合作者。
支持WSDL - Axis 支持WSDL1.1 ,可以简单的构建访问远程服务的桩(stub ), 还可以自动将部署的服务从Axis 导出为机器可识别的描述。
插件
组成和可扩展性
缺点:
Axis2重量级框架和支持多语言的特性不可避免的导致了Axis2的复杂性,开发所依赖的包数量和大小都是很惊人的,打包部署发布都比较麻烦,不能很好的与现有应用整合为一体。
Axis2的开发者太急于推出1.0版本,所以1.0还不是一个稳定的版本。(三)XFire 介绍
XFire是codeHaus 组织提供的一个开源高性能的WebService框架,在Java6之前,它的知名度甚至超过了Apache的Axis2,是与Axis2 并列的新一代WebService平台。它构建了 POJO 和 SOA 之间的桥梁,主要特性就是支持将 POJO 通过非常简单的方式发布成 Web 服务,这种处理方式不仅充分发挥了 POJO 的作用,简化了 Java 应用转化为 Web 服务的步骤和过程,也直接降低了 SOA 的实现难度,为企业转向 SOA 架构提供了一种简单可行的方式。
XFire 优点
开发方便,容易上手,与现有的Web整合很好,可以融为一体,并且开发也很方便,可以方便快速地从pojo发布服务。
高性能的 SOAP 实现,比Axis1.3快2-6倍,响应时间是Axis1.3的1/2到1/5。
支持一系列Web Service的新标准,如JSR181、WSDL2.0 、JAXB2、WS-Security等。
使用Stax解释XML,性能有了质的提高。XFire采用Woodstox 作Stax实现。
灵活的Binding机制,包括默认的pojo,Aegis,xmlbeans,jaxb2和castor。
对 Spring 、Pico 、Plexus 等项目的支持等。
支持基于 HTTP 、JMS 、XMPP 等多种协议访问 Web 服务。
支持 JSR181 ,可以通过 JDK5 配置 Web 服务。
服务器端、客户端代码辅助生成。
缺点:
对Java之外的语言,没有提供相关的代码工具。
二、三种WebServie框架之间的对比
(一)Axis2 与 axis1比较
相对于axis1,Axis2 从速度和内存方面获得更好的性能,不过还添加了一些新特性和功能。大部分新特性都是为了提高 Axis2 的易用性,并同时保留通过各种方式扩展功能的空间。大部分新功能所添加到的主要领域。
新XML对象模型(AXIOM)
与 Axis 1.x 相比,Axis2 构建于全新的体系结构之上。Axis 1.x 使用DOM作为其XML 表示机制,但使用DOM的缺点是,需要在内存中保存完整的对象层次结构(与传入消息对应)。对于小消息,这将不是问题,但对于大型消息就是问题了。为了克服此问题,Axis2 引入了新的 XML 表示形式作为其基础。
基于消息传递的核心
Axis2 核心是纯SOAP处理引擎,并不了解数据绑定、传输、WSDl等内容。Axis2核心的主要功能是处理传输消息,并将其交付给目标应用程序。与 Axis 1.x 一样,Axis2也具有用于扩展其主要功能的处理程序概念。Axis2 具有流的概念,流是阶段的集合,而阶段是处理程序的集合。根据给定方法调用的 MEP ,与其关联的流的数量可能会有所变化。
部署模型
在 Axis 1.x 中,用户必须手动调用管理客户机,并更新服务器类路径,然后重新启动服务器,以应用更改。这个有点麻烦的部署模型对新手肯定是一道障碍。Axis2 经过了精心的设计,能够克服此缺点,并提供灵活、用户友好、可方便进行配置的部署模型。Axis2 部署引入了类似于 Java™ 2 Platform Enterprise Edition (J2EE) 部署机制的概念,开发人员可以在其中将所有类文件、库文件、资源文件和配置文件一起打包为存档文件,并将其放置在文件系统中的指定位置。
4.模块体系结构
在 Axis 1.x 中,要添加处理程序,需要首先更改全局配置文件,然后需要重新启动系统,并没有在运行时更改处理程序链的动态方法。为了克服这个问题和增加新特性,Axis2 引入了 Web 服务扩展或模块的概念;其中模块的主要工作是对核心功能进行扩展。在 Axis 1.x 中,可以通过向处理程序链添加处理程序来实现此目标。与 Axis 1.x 处理程序链相比,使用模块的优势在于,您可以在根本不改变全局配置文件的情况下添加新模块。同时,模块是一个自容器,其中可以包含处理程序、第三方库、模块相关资源和模块配置文件。(二)Axis2与XFire比较
开发所依赖的包数量和大小都是很惊人的,打包部署发布都比较麻烦。虽然XFire 与Axis2 都是新一代的WebService 平台,但是Axis2 的1.0 版本还不是一个稳定的版本。在XFire 捐献给apache 后有人认为Axis2 将会灭亡。在很多人眼里,Axis2 并不是pojo 形式,Dan Diephouse 证明了XFire 比Axis 更有市场。用XFire 进行WebService 的开发比Axis2 简单很多。
XFire开发方便,容易上手,可以方便快速地从pojo发布服务。(三)XFire与Axis比较
XFire比Axis1.3快2-6倍,响应时间是Axis1.3的1/2到1/5;支持一系列Web Service的新标准,如JSR181、WSDL2.0 、JAXB2、WS-Security等;使用Stax解释XML,性能有了质的提高。XFire采用Woodstox 作Stax实现;灵活的Binding机制,包括默认的pojo,Aegis,xmlbeans,jaxb2和castor;对Spring的支持;容易上手,可以方便快速地从pojo发布服务;