在SOA领域,我们认为Web Service是SOA体系的构建单元(building block)。对于服务开发人员来说,AXIS和CXF一定都不会陌生。这两个产品都是Apache孵化器下面的Web Service开源开发工具。 Axis2的最新版本是1.3.CXF现在已经到了2.1版本。
这两个框架 都是从已有的开源项目发展起来的。Axis2是从Axis1.x系列发展而来。CXF则是XFire和Celtix项目的结合产品。Axis2是从底层全部重新实现,使用了新的扩展性更好模块架构。 CXF也重新的深化了XFire和Celtix这两个开发工具。
新产品的退出导致了几个问题。是不是现有的使用Axis 1.x,XFire和Celix的应用需要迁移的新的版本上。如果一个开发人员确定要迁移它的应用到新的框架上,那么他应该选择哪一个呢?相反的,如果一个开发者决定从头开发一个新的Web Service,他应该使用哪个呢? 这两个框架哪一个更好一些呢?
对于系统迁移来说,也许迁移到新的框架并不难。Axis和CXF都提供了迁移的指导。能够给开发者一些迁移的技巧和经验。但是对于这样迁移,这两个开源项目都没有提供迁移的工具。对于这样的迁移工作,尽管很值得去寻找所有的可行方案。Axis2和CXF都有各自不同的WebService开发方法,每个方法都有相当数量拥护者。
通过一个比较矩阵来比较Axis2和CXF变得有现实的意义。这两个项目都开发不够成熟,但是最主要的区别在以下几个方面:
1.CXF支持 WS-Addressing,WS-Policy, WS-RM, WS-Security和WS-I Basic Profile。Axis2不支持WS-            Policy,但是承诺在下面的版本支持。
2. CXF可以很好支持Spring。Axis2不能
3. AXIS2支持更广泛的数据并对,如XMLBeans,JiBX,JaxMe和JaxBRI和它自定义的数据绑定ADB。注意JaxME和         JaxBRI都还是试验性的。CXF只支持JAXB和Aegis。在CXF2.1
4. Axis2支持多语言-除了Java,他还支持C/C++版本。
比较这两个框架的Web Service开发方法与比较它们的特性同样重要。 从开发者的角度,两个框架的特性相当的不同。 Axis2的开发方式类似一个小型的应用服务器,Axis2的开发包要以WAR的形式部署到Servlet容器中,比如Tomcat,通过这些容器可以对工作中的Web Service进行很好的监控和管理。Axis2 的Web administrion模块可以让我们动态的配置Axis2.一个新的服务可以上载,激活,使之失效,修改web服务的参数。管理UI也可以管理一个或者多个处于运行状态的服务。这种界面化管理方式的一个弊端是所有在运行时修改的参数没有办法保存,因为在重启动之后,你所做的修改就会全部失效。
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也是不错的选择,你应该继续使用它知道你有充分的理由去更换它。

转载于:https://www.cnblogs.com/rongxh7/archive/2010/05/06/1728468.html

开发WebService两种开源工具CXF和Axis2的比较相关推荐

  1. 持续集成与持续部署(四)01-Jenkins——简介-基于Java开发的一种开源持续集成工具

    持续集成与持续部署(四)01-Jenkins--简介-基于Java开发的一种开源持续集成工具 Jenkins 使用简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控 ...

  2. Mixly第三方库开发的两种方法——U8g2库二次开发

    Mixly第三方库开发的两种方法--U8g2库二次开发 前言 方法一:自定义库 1.创建库文件夹 2.开始编程 2.1.定义图形块的基本信息 2.2.定义图形块的外观样式 2.3.定义图形块与C语言的 ...

  3. vc6.0开发环境两个辅助工具

    vc6.0开发环境两个辅助工具: 1)增加行号:http://download.csdn.net/detail/fjssharpsword/4162972 2)增加代码颜色和工具栏:http://do ...

  4. php微信公众号开发难吗,PHP微信公众号开发的两种模式

    微信现在已经深入到每个家庭,每个人至少人手一个账号是确定的,所以开发公众号也是很普遍的,今天爱站技术频道小编为大家带来的是PHP微信公众号开发的两种模式,感兴趣的小伙伴们可以参考下面的介绍. 学习步骤 ...

  5. android 热更新 方案,热更新-热更新app开发的两种系统方案!

    针对app开发工作人员来讲,除开要会编码,热更新也是一定要学好和把握的方法,从技术性视角而言,热更新对Android和iOS各自有不一样的系统软件方案,为了更好地让大伙儿掌握这二种系统方案的差别,今日 ...

  6. 单片机开发的两种类型

    ** 单片机开发的两种类型 ** 最近学了一下ROS操作系统的工作原理和使用方法,想到了对于单片机来说的操作系统RTOS开发的一些概念,觉得有必要在细说一下单片机开发的两种方式. 首先,单片机开发一般 ...

  7. 视频网站服务器架构,适用于视频直播网站开发的两种架构

    原标题:适用于视频直播网站开发的两种架构 为了保证直播的顺利进行,技术人员在开发过程中可没少费了功夫.其实直播架构的设计对于直播来说,也是决定直播能否稳定运行的因素之一.通常,为了能够很好的应对实时交 ...

  8. 55种数据可视化开源工具_4种开源工具让我的创业起步

    55种数据可视化开源工具 当我创办第一家公司时,资金很紧张. 我们有一个小型办公室和几台计算机,但没有其他很多. 我完成了所有成本计划,甚至没有考虑营业执照和软件成本. 我知道这是一个错误,但是将此类 ...

  9. JSP网站开发技术两种模式介绍

    目前, JSP技术正是利用了Java的"一次开发,处处使用"的性能,成为了网站开发技术人员的首选技术.当然,JSP技术的最大优势在于它能够将页面的表现形式和页面的商业逻辑分开.JS ...

最新文章

  1. 配置Tomcat和在Eclipse中创建Web工程
  2. 吃糖学知识?通过舌头传感器,让视障人群“看见”形状
  3. 程序员在囧途之软件投标实战
  4. mod php是什么意思,mod_php模式原理探析
  5. selenium python 入门-元素定位
  6. vb趣味编程弹球小游戏_最好玩的微信小游戏集合,总有一款是你没玩过的
  7. T-1-java语言基础
  8. Kubernetes 入门教程
  9. 超像素 Superpixel
  10. 使用 Inkscape 制作电子签名
  11. pc自建服务器传输3ds,新3DS自带的PC管理MicroSD 最强无线传输软件
  12. GPU版TensorFlow设置CPU运行的办法
  13. 怎么查看本地IP地址
  14. 中断系统的相关知识(二)(可位寻址、不可位寻址)
  15. Java中打印程序执行的开始时间和结束时间
  16. 农业遥感技术科研成果汇总
  17. 动态分区分配及可重定位分区分配
  18. Android 中文API网址
  19. oracle amp lt是什么东西,在网页设计中amp;amp;nbsp;是什么意思
  20. 数字0-9的数量 (数位dp ,技巧)

热门文章

  1. Git pull[push] 不用每次输入用户名和密码
  2. mongodb 3.2性能测试
  3. [LeetCode]--5. Longest Palindromic Substring
  4. Java程序结合Aapche Ant进行远程服务器文件备份
  5. [图示]营销理论:不同时代的用户如何接受一个新事物?
  6. 一个浏览器插件,测试xpath的工具
  7. mysql基础(九) 索引和视图
  8. 如何让你的操作系统更安全二
  9. 《C和C++程序员面试秘笈》——1.9 如何理解C++是面向对象化的,而C是面向过程化的...
  10. Nginx流媒体支持配置