2007-09-30

如何正确地在Axis、Axis2和Apache CXF之间抉择?

关键字: axis axis2 cxf spring
新一代的 Web Services 框架如 Axis2、CXF 都是由现有的项目中逐渐演化而来的,Axis2 是由大家熟悉的 Axis 1.x 系列演化过来,而 Apache CXF 则是由 Celtix 和 XFire 项目整合而生,并且刚刚发布了 2.0.2 的最新版本,不过仍是 Apache 的一个孵化项目。

Axis2 是对 Axis 进行了彻底的重写的一个新项目了,它使用了新的模块化架构,更方便于功能性的扩展等等。
Apache CXF 则是由 XFire 和 Celtix 两个现有的项目进行了重组。

问题:如果现有的应用程序是基于 Axis 1.x、XFire 或者 Celtix 的话,那应该怎么办?都迁移到这些新的框架上去吗?但是即使是要迁移,那应该迁移到哪个框架上去呢?
如果是编写一个新的 Web Services 应用程序的话,就不存在迁移的问题了,但是哪个框架是你应当选择进行使用的呢?哪个比哪个更好呢?

对于现在的应用程序的迁移,如果你的应用程序是稳定而成熟的,并且在可预知的未来的情况下,只要很少的一些需求变更要做的话,那么保存你的体力,不要去做“劳民伤财“的迁移工作了。
如果你的现有应用程序BUG缠身,性能,功能等等都一片糟糕的话,那就要考虑迁移了,那选哪个框架呢?先比较一下它们的不同之处:

  1、Apache CXF 支持 WS-Addressing、WS-Policy、WS-RM、WS-Security和WS-I BasicProfile
  2、Axis2 支持 WS-Addressing、WS-RM、WS-Security和WS-I BasicProfile,WS-Policy将在新版本里得到支持
  3、Apache CXF 是根据Spring哲学来进行编写的,即可以无缝地与Spring进行整合
  4、Axis2 不是
  5、Axis2 支持更多的 data bindings,包括 XMLBeans、JiBX、JaxMe 和 JaxBRI,以及它原生的 data binding(ADB)。
  6、Apache CXF 目前仅支持 JAXB 和 Aegis,并且默认是 JAXB 2.0,与 XFire 默认是支持 Aegis 不同,XMLBeans、JiBX 和 Castor 将在 CXF 2.1 版本中得到支持,目前版本是 2.0.2
  7、Axis2 支持多种语言,它有 C/C++ 版本。
  8、Apache CXF 提供方便的Spring整合方法,可以通过注解、Spring标签式配置来暴露Web Services和消费Web Services

如何抉择:
1、如果应用程序需要多语言的支持,Axis2 应当是首选了;
2、如果应用程序是遵循 Spring 哲学路线的话,Apache CXF 是一种更好的选择,特别对嵌入式的 Web Services 来说;
3、如果应用程序没有新的特性需要的话,就仍是用原来项目所用的框架,比如 Axis1,XFire,Celtrix 或 BEA 等等厂家自己的 Web Services 实现,就别劳民伤财了。
评论
咖啡舞者 16 小时前
xly_971223 写道
问一下用多少网站在真正的用web sevice?有多少网站真正的使用了axis cxf。天天都在有新框架诞生, 如果程序员要一个一个去学,岂不是太累了。
在我看来 如果网站不需要对外公布service,只是内部模块见交互,则完全可以自己去定义web service协议,越简单越好 能解决问题就好。httpclient就是个不错的选择


在XFIRE中就有用到了HTTPCLIENT。
如果仅用HTTPCLIENT实现远程通信service,虽然这样可以达到web service的目的,但开发效率太低。
而且接口不友好。

不知道我的理解对不对。因为我现在项目中开发分布式的系统也只是HttpClient加XML来进行数据交互,成本低但开发效率也很低。
kevin002 2008-02-02
现在用的是XFIRE感觉用着很简单,功能也不错.
freeflyfree 2008-01-28
jnn 写道
jxauyhj 写道
如果要做成被 delphi .net等都好调用的话 哪个会好点??


我们做过一些CXF与.net之间的互操作性测试,应该问题不大。



我最近做的一个项目需要调用.net做的web service,对方返回的是一个自定义对象的数组

类似:
对象为 user,返回一个user的数组

不知道如何能接收这种对象数组?我测试了只能接收基本类型的数组。
homesailing 2008-01-08
并且一些ws-*规范都可以通过这些ide来进行配置。我觉得很方便、很稳定、很安全!
homesailing 2008-01-08
lyo 写道
Axis和很多开源包使用的xml解析器都冲突,每次用都遇到问题,特别是再websphere下部署webservice就是恶梦. 有时间看看 CXF!


为何说在was下部署ws时噩梦?

如果用rad6/7开发ws,然后部署上基于axis引擎的was,同部署常规ear,war应用没有区别。
wtslh 2008-01-07
项目中,有个运行中心,要提供很多个服务,允许多种语言开发的软件进行访问,而运行中心也要访问外部的很多个服务(不一定是什么语言开发的)。关于框架的采用,希望给些建议,谢谢
jnn 2007-12-22
CXF支持client端的异步调用功能,这个功能是JAXWS 规范中定义的。
agile_boy 2007-12-21
AXIS2好像支持异步操作,CXF支持么?
jnn 2007-12-18
今天突然翻到Dan Diephouse 写的有关CXF 和 Axis的区别,建议有兴趣的朋友读一读。 http://www.nabble.com/Re%3A-Axis2-vs-CXF-p11481341.html
jnn 2007-12-17
[quote="xly_971223"]问一下用多少网站在真正的用web sevice?有多少网站真正的使用了axis cxf。天天都在有新框架诞生, 如果程序员要一个一个去学,岂不是太累了。 在我看来 如果网站不需要对外公布service,只是内部模块见交互,则完全可以自己去定义web service协议,越简单越好 能解决问题就好。httpclient就是个不错的选择[/quote]

有点不太懂, httpclient和WebServers 有什么直接的联系呢?
还要如果想研究网站提供的服务 你可以看看Yahoo, Google, Amazon...
rEloaD_cn 2007-12-17
aixs2比较好,支持好多新的ws-* 。还可以支持模块增加
cxf不了解
fjiis 2007-12-11
从CXF在TOMCAT下输出的日志看,基本上是SOAP:Envelope与SOAP-ENV:Envelope的差别,请求的参数都有包含在这里面了,可为什么进行service.java时DELPHI客户端请求的参数变成了null?有人知道吗?
fjiis 2007-12-11
请问我用DELPHI7.0做客户端测试与CXF互操作性时发生客户端请求参数发到CXF时变成null了!这是为什么?用JAVA写的客户端又没有问题
xly_971223 2007-12-10
问一下用多少网站在真正的用web sevice?有多少网站真正的使用了axis cxf。天天都在有新框架诞生, 如果程序员要一个一个去学,岂不是太累了。
在我看来 如果网站不需要对外公布service,只是内部模块见交互,则完全可以自己去定义web service协议,越简单越好 能解决问题就好。httpclient就是个不错的选择
sslaowan 2007-12-09
jxauyhj 写道
如果要做成被 delphi .net等都好调用的话 哪个会好点??


用过Xfire和Delphi的互操作,没什么问题
sslaowan 2007-12-09
jxauyhj 写道
如果要做成被 delphi .net等都好调用的话 哪个会好点??
fenixshadow 2007-12-04
转载请注明出处
jnn 2007-10-29
jxauyhj 写道
如果要做成被 delphi .net等都好调用的话 哪个会好点??


我们做过一些CXF与.net之间的互操作性测试,应该问题不大。
aone 2007-10-29
lyo 写道
Axis和很多开源包使用的xml解析器都冲突,每次用都遇到问题,特别是再websphere下部署webservice就是恶梦. 有时间看看 CXF!


是的,axis和jfreechart就有冲突.
jxauyhj 2007-10-28
如果要做成被 delphi .net等都好调用的话 哪个会好点??
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

YuLimin
  • 浏览: 581411 次
  • 性别: Icon_minigender_1
  • 来自: 福建莆田@广州
  • 详细资料
搜索本博客
我的相册
7b3cc362-5ffb-3f8e-bf39-9e153e30ca74-thumb
力拔千斤
共 146 张
存档
最新评论