Apache CXF和Axis之间的区别

Pra*_*u R 173 axis wsdl axis2 cxf

使用Apache CXF而不是Apache Axis有什么好处,反之亦然?

Dan*_*ulp 226

请记住,我完全有偏见(PMC主席的CXF),但我的想法:

从严格的"可以让项目做我需要做的事情"的角度来看,两者都是相当的.有一些"边缘情况"的东西,CXF可以做到Axis 2不能,反之亦然.但是对于90%的用例,要么都能正常工作.

因此,它归结为除了"复选框功能"之外的其他一些东西.

  • API - CXF推动"基于标准"的API(符合JAX-WS),而Axis2则推向专有的东西.也就是说,即使是CXF也可能需要使用专有API来配置/控制JAX-WS规范之外的各种内容.对于REST,CXF也使用标准API(符合JAX-RS)而不是专有的东西.(是的,我知道Axis2中的JAX-WS运行时,但是工具和文档以及一切都没有针对它)

  • 社区方面和可支持性 - CXF以响应问题和为用户提供"修复包"而自豪.CXF为2.0.x做了12个修复包(两年前发布,大约每2个月发布一次),6个修复包到2.1.x,现在3个用于2.2.x. Axis2并不真正"支持"旧版本.除非出现"关键"问题,否则您可能需要等到下一个大版本(他们平均每9-10个月左右)获得修复.(尽管如此,你可以抓住源代码并自行修补/修复.必须喜欢开源.)

  • 集成 - 如果使用Spring,CXF具有更好的Spring集成.所有的配置都是通过Spring完成的.此外,人们倾向于将CXF视为更"可嵌入"(我从未从这个角度看待Axis2)到其他应用程序中.不确定这件事对你来说是否重要.

  • 表现 - 他们都表现得很好.我认为Axis2的专有ADB数据绑定比CXF快一点,但如果你再次使用JAXB(基于标准的API),CXF会更快一些.当使用更复杂的场景(如WS-Security)时,底层安全"引擎"(WSS4J)对于两者都是相同的,因此性能完全可比.

不确定是否完全回答了这个问题.希望它至少提供一些信息.

:-)

  • 最近从WS-Security角度进行的比较:http://www.ibm.com/developerworks/java/library/j-jws19/index.html (10认同)

vsg*_*vsg 54

  • Axis2:市场上无处不在,支持更多绑定,支持其他语言,如C/C++.
  • CXF:更容易使用,更友好,更快获得对某些WS-*扩展的支持.

  • +1更容易使用.从WSDL生成WS/WS客户端的基本类时,IMO,CXF也不那么冗长.Axis客户端需要一些令人烦恼的代码,而不是CXF的代码. (5认同)

Chr*_*der 42

还有一件事是社区的活动.比较axis和cxf(2013)的邮件列表流量.

因此,如果这是任何使用指标,那么轴的使用远远少于cxf.

在ohloh比较CXF和Axis统计数据.CXF的活动非常活跃,而Axis整体活动较少.

这是CXF(红色)和Axis1(绿色)Axis2(蓝色)随时间变化的提交图表. 在此输入图像描述


aji*_*ban 23

CXF的优点:

  1. CXF支持WS-Addressing,WS-Policy,WS-RM,WS-Security和WS-I BasicProfile.
  2. CXF实现了JAX-WS API(根据JAX-WS 2.0 TCK).
  3. CXF与Spring和其他框架的集成更好.
  4. CXF在拦截器策略方面具有很高的可扩展性.
  5. CXF通过API提供了更多可配置功能,而不是繁琐的XML文件.
  6. CXF具有绑定:SOAP,REST/HTTP及其数据绑定支持JAXB 2.0,Aegis,默认情况下它使用JAXB 2.0和更接近的Java标准规范.
  7. CXF拥有丰富的工具包,例如Java到WSDL,WSDL到Java,XSD到WSDL,WSDL到XML,WSDL到SOAP,WSDL到服务.

Axis2的优点:

  1. 除了WS-Policy之外,Axis2还支持WS-RM,WS-Security和WS-I BasicProfile,我希望它将在即将推出的版本中得到支持.
  2. Axis为您的选择提供了更多数据绑定选项
  3. Axis2支持多种语言 - 包括C/C++版本和Java版本.
  4. Axis2支持更广泛的数据绑定,包括XMLBeans,JiBX,JaxMe和JaxBRI以及它自己的本机数据绑定ADB.比CXF更长的历史.

总结:从上面的优势项目中,我们可以根据自己的优点对Axis2和CXF进行比较.它们在某个领域都有不同的发展领域,CXF非常易于配置,可集成并且拥有丰富的工具包,并且与Java社区相近,Axis2采用了一种方法,使其在许多方面类似于微型应用服务器.它涉及多种编程语言.因为它的独立性,Axis2适用于独立于其他应用程序的Web服务,并提供各种功能.

作为开发人员,我们需要根据我们的观点选择合适的人选,无论您选择哪个框架,您都将获得积极稳定的开源社区的好处.在性能方面,我做了一个基于相同功能的测试,并在同一个Web容器中进行了配置,结果表明CXF的性能略好于Axis2,单个案例可能无法准确反映其功能和性能.

在一些研究文章中,它揭示了Axis2的专有ADB数据绑定比CXF快一点,因为它没有附加功能(WS-Security).Apache AXIS2是相对最常用的框架,但Apache CXF在其他Web服务框架上的得分相对考虑了开发的简易性,当前的行业趋势,性能,整体记分卡和其他功能(除非明确需要Web Services Orchestration支持,这里不需要) )