Apache CXF 与 Axis 的区别

在 ApacheAxis 上使用 ApacheCXF 的优点是什么,反之亦然?

106502 次浏览

请记住,我是完全有偏见的(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 发布了12个补丁包(两年前发布,大约每两个月发布一次) ,为2.1. x 发布了6个补丁包,现在为2.2. x 发布了3个补丁包。Axis2并不真正“支持”旧版本。除非遇到“关键”问题,否则您可能需要等到下一个大版本(平均每9-10个月左右)才能获得修复。(不过,使用任何一种方法,您都可以获取源代码并自己修补/修复。爱死开源了。)

  • Integration-如果使用 Spring,CXF 具有更好的 Spring 集成。所有的配置都是通过 Spring 完成的。此外,人们往往认为 CXF 更“可嵌入”(我从来没有从这个角度看过 Axis2)。不知道这种事对你来说有没有意义。

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

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

:-)

  • Axis2 : 在市场上更加普遍,支持更多的绑定,支持其他语言,比如 C/C + + 。
  • CXF : 使用起来更加容易,对 Spring 更加友好,对一些 WS-* 扩展的支持更快。

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

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

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

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

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

CXF 的优点:

  1. CXF 支持 WS-Address、 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 到服务。

Axis2的优点:

  1. Axis2还支持 WS-RM、 WS-Security 和 WS-I BasicProfile (WS-Policy 除外) ,我预计它将在即将推出的版本中得到支持。
  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 服务编排支持,这在这里不是必需的)方面得分高于其他 Web 服务框架

CXF 的另一个优点是: 它使用开箱即用的 NTLMV2身份验证连接到 Web 服务器。(适用于 Windows2008及以上版本) 在使用 CXF 之前,我对 Axis2进行了修改,使其使用 HTTPClientV4 + JCIFS 来实现这一点。