Apache CXF和Axis的区别

Apache Axis使用Apache CXF有什么优势,反之亦然?

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

从严格的“项目能做到我所需要做的”angular度来看,两者都是相当的。 CXF可以做一些“边缘情况”,Axis 2不能,反之亦然。 但是对于90%的使用情况,要么工作得很好。

因此,除了“checkboxfunction”之外,还有其他一些内容。

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

  • 社区方面和可支持性 – CXF引以为荣的是对问题做出回应,并为用户提供“修复包”。 CXF为2.0.x(两年前发布,大约每2个月)做了12个修订包,6个修复包到2.1.x,现在为2.2.x增加了3个。 Axis2并不真正“支持”旧版本。 除非遇到“严重”问题,否则您可能需要等到下一个大版本(平均每9-10个月左右)才能获得修复。 (尽pipe如此,你也可以获取源代码并修补/修复你自己。

  • 集成 – 如果你使用Spring,CXF有更好的Spring集成。 所有的configuration都是通过Spring完成的。 此外,人们倾向于认为CXF更“embedded”(从这个angular度来看,我从来没有将Axis2视为其他应用程序)。 不知道是否这样的事情对你很重要。

  • 性能 – 他们都performance非常好。 我认为Axis2专有的ADB数据绑定比CXF快一点,但是如果您再次使用JAXB(基于标准的API),CXF会快一点。 当使用WS-Security等更复杂的场景时,底层安全“引擎”(WSS4J)对于两者来说都是相同的,因此性能是完全可比的。

不知道这是否回答这个问题。 希望它至less提供一些信息。

🙂

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

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

  • 轴用户每月50-100邮件
  • CXF用户每月400-500邮件

所以如果这是任何使用指标,那么轴比cxfless得多。

在ohloh比较CXF和Axis的统计数据 。 CXF的活动非常高,而Axis整体活动度低。

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

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具有更多的可configurationfunction,而不是繁琐的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有更多的数据绑定选项供您select
  3. Axis2支持多种语言,包括C / C ++版本和Java版本。
  4. Axis2支持更广泛的数据绑定,包括XMLBeans,JiBX,JaxMe和JaxBRI以及自己的本地数据绑定ADB。 比CXF更长的历史。

总结:从上面的优势项目来看,我们有一个很好的想法来比较Axis2和CXF各自的优点。 它们在某个领域都有不同的发达地区,CXF具有很强的可configuration性,可集成性,并且拥有丰富的工具包,并且与Java社区接近,Axis2采取了一种使得它在很多方面类似于微型应用服务器的方法。 它跨越多种编程语言。 由于其独立性,Axis2适合独立于其他应用程序的Web服务,并提供各种function。

作为一名开发人员,我们需要根据自己的观点select合适的人选,无论您select哪种框架,您都将拥有一个积极稳定的开源社区。 在性能方面,我做了一个基于相同function的testing,并在同一个Web容器中进行了testing,结果表明CXF的性能比Axis2稍好一点,但这个例子可能并不能完全反映它们的性能和性能。

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

根据我的经验,CXF在configuration到Spring环境方面是很好的。 生成的类也很容易理解。 而且更为活跃,与AXIS或AXIS2相比,我们得到了更好的支持。

CXF的另一个优点是它使用NTLMV2身份validation即可连接到Web服务器。 (用于Windows 2008及以上)在使用CXF之前,我攻击了Axis2使用HTTPClient V4 + JCIFS来实现这一点。