Apache CXF和Axis之间的区别


Answers:


229

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

从严格的“项目可以做我需要做的事情”的角度来看,两者是相当等效的。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(两年前发布,大约每2个月发布一次)制作了12个修订包,针对2.1.x制作了6个修订包,现在针对2.2.x制作了3个修订包。Axis2并不真正“支持”较旧的版本。除非遇到“关键”问题,否则您可能需要等到下一个大版本(它们平均大约每9-10个月左右)才能获得修复。(尽管使用这两种方法,您都可以获取源代码并自己打补丁/修复。一定喜欢开源。)

  • 集成-如果您使用Spring,则CXF具有更好的Spring集成。所有配置等都是通过Spring完成的。同样,人们倾向于将CXF视为其他应用程序中更“可嵌入的”(我从未从这个角度看过Axis2)。不知道这样的事情对您是否重要。

  • 性能-它们都表现出色。我认为Axis2专有的ADB数据绑定比CXF快一点,但是如果您使用JAXB(又是基于标准的API),则CXF快一点。当使用诸如WS-Security之类的更复杂的方案时,两者的基础安全性“引擎”(WSS4J)相同,因此性能完全可比。

不知道这是否能回答所有问题。希望它至少能提供一些信息。

:-)


10
从WS-Security角度最近进行的比较: ibm.com/developerworks/java/library/j-jws19/index.html
Daniel Kulp 2010年

在Intranet中使用CXF时,是否有任何使HTTP通信更快的指标?通过lan连接到8个
Web服务

57
  • 轴2:在市场上更普遍,支持更多的绑定,支持其他语言,例如C / C ++。
  • CXF:更易于使用,对Spring更友好,对某些WS- *扩展的支持更快。

引用的比较不再可用:“已删除上载内容”
maiklos 2012年

5
+1更加易于使用。从WSDL为WS / WS-client生成基本类时,IMO,CXF的详细程度也较低。与CXF相比,Axis客户端需要大量难以理解和难以理解的代码。
Priidu Neemre

42

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

因此,如果这是使用情况的任何指标,则axis的使用量远少于cxf。

在ohloh比较CXF和Axis统计信息。CXF具有很高的活动性,而Axis总体具有较低的活动性。

这是CXF(红色)和Axis1(绿色),Axis2(蓝色)随时间推移的提交次数的图表。 在此处输入图片说明


24

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具有Bindings:SOAP,REST / HTTP,并且其Data Bindings支持JAXB 2.0,Aegis,默认情况下它使用JAXB 2.0和更接近的Java标准规范。
  7. CXF具有丰富的工具包,例如Java到WSDL,WSDL到Java,XSD到WSDL,WSDL到XML,WSDL到SOAP,WSDL到Service。

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是相对最常用的框架,但相对于其他Web服务框架,Apache CXF在考虑易于开发,当前行业趋势,性能,总体记分卡和其他功能方面得分较高(除非明确需要Web Services Orchestration支持,在此不需要)


2

根据我的经验,CXF可以很好地将其配置到Spring环境中。生成的类也很容易理解。而且,由于它更加活跃,因此与AXIS或AXIS2相比,我们获得了更好的支持。


1

CXF的另一个优点是:它可以直接使用NTLMV2身份验证连接到Web服务器。(在Windows 2008及更高版本中使用)在使用CXF之前,我黑客Axis2使用HTTPClient V4 + JCIFS使其成为可能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.