179

与 Apache Axis 相比,使用 Apache CXF 有哪些优势,反之亦然?

4

6 回答 6

232

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

从严格的“项目可以做我需要做的事情”的角度来看,两者都是相当的。CXF 可以做一些轴 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 个月发布一次),为 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)是相同的,因此性能完全可比。

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

:-)

于 2009-08-07T15:21:06.930 回答
59
  • Axis2:在市场上更普遍,支持更多绑定,支持其他语言,如 C/C++。
  • CXF:更容易使用,对 Spring 更友好,更快地获得对某些 WS-* 扩展的支持。
于 2010-02-25T18:30:20.473 回答
43

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

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

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

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

于 2013-04-19T07:50:39.660 回答
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 to WSDL、WSDL to Java、XSD to WSDL、WSDL to XML、WSDL to SOAP、WSDL to 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 是相对最常用的框架,但 Apache CXF 相对于其他 Web 服务框架得分相对于其他 Web 服务框架而言,考虑到开发的便利性、当前的行业趋势、性能、整体记分卡和其他特性(除非明确需要 Web 服务编排支持,此处不需要)

于 2014-01-31T17:55:44.257 回答
2

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

于 2013-12-20T13:54:09.167 回答
1

CXF 的另一个优点:它使用开箱即用的 NTLMV2 身份验证连接到 Web 服务器。(由 Windows 2008 及更高版本使用)在使用 CXF 之前,我破解了 Axis2 以使用 HTTPClient V4 + JCIFS 来实现这一点。

于 2014-09-26T16:41:32.527 回答