Apache CXF和Axis之间的区别

时间:2009-08-07 06:38:03

标签: wsdl axis2 cxf axis

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

6 个答案:

答案 0 :(得分:222)

请记住,我完全有偏见(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)对于两者都是相同的,因此性能完全可比。

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

: - )

答案 1 :(得分:53)

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

答案 2 :(得分:41)

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

因此,如果这是任何使用指标,则轴的使用率远低于cxf。

Compare CXF and Axis statistics at ohloh。 CXF的活动非常活跃,而Axis整体活动较少。

这是CXF(红色)和Axis1(绿色)Axis2(蓝色)随时间变化的提交图表。 enter image description here

答案 3 :(得分: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到服务。
  8. 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更长的历史。
    5. 摘要: 从以上优势项目中,我们可以根据自己的优点对Axis2和CXF进行比较。它们在某个领域都有不同的发展领域,CXF非常易于配置,可集成并且拥有丰富的工具包,并且与Java社区相近,Axis2采用了一种方法,使其在许多方面类似于微型应用服务器。它涉及多种编程语言。因为它的独立性,Axis2适用于独立于其他应用程序的Web服务,并提供各种功能。

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

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

答案 4 :(得分:1)

根据我的经验,CXF在将其配置到Spring环境方面表现良好。生成的类也很容易理解。而且由于它更活跃,与AXIS或AXIS2相比,我们获得了更好的支持。

答案 5 :(得分:1)

CXF的另一个优点:它使用开箱即用的NTLMV2身份验证连接到Web服务器。 (由Windows 2008& up使用) 在使用CXF之前,我攻击了Axis2以使用HTTPClient V4 + JCIFS来实现这一目标。