ChatGPT解决这个技术问题 Extra ChatGPT

Apache CXF 和 Axis 之间的区别

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


D
Daniel Kulp

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

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

:-)


最近从 WS-Security 角度进行的比较:ibm.com/developerworks/java/library/j-jws19/index.html
在 Intranet 中使用 CXF 时,是否有任何关于使 HTTP 通信更快的指针?通过局域网连接到 8 个 Web 服务
老实说,在当前的 1.8 axis2 版本中,我认为 JAX_WS 合规性与 CXF 非常相似
3
3 revs, 2 users 69%

Axis2:在市场上更普遍,支持更多绑定,支持其他语言,如 C/C++。

CXF:更容易使用,对 Spring 更友好,更快地获得对某些 WS-* 扩展的支持。


引用的比较不再可用:“已删除上传的内容”
+1 更易于使用。 IMO,当从 WSDL 为 WS/WS 客户端生成基本类时,CXF 也不那么冗长。与 CXF 相比,Axis 客户端需要大量难以理解和折射的代码。
C
Christian Schneider

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

Axis 用户每月 50-100 封邮件

CXF 用户每月 400-500 封邮件

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

Compare CXF and Axis statistics at ohloh。 CXF 的活跃度非常高,而 Axis 的活跃度总体较低。

https://i.stack.imgur.com/IKqtJ.png


N
Namphibian

CXF的优势:

CXF 支持 WS-Addressing、WS-Policy、WS-RM、WS-Security 和 WS-I BasicProfile。 CXF 实现 JAX-WS API(根据 JAX-WS 2.0 TCK)。 CXF 与 Spring 和其他框架有更好的集成。 CXF 在拦截器策略方面具有很高的可扩展性。 CXF 通过 API 而不是繁琐的 XML 文件具有更多可配置的功能。 CXF有Bindings:SOAP,REST/HTTP,其Data Bindings支持JAXB 2.0,Aegis,默认使用JAXB 2.0及更接近的Java标准规范。 CXF拥有丰富的工具包,如Java to WSDL、WSDL to Java、XSD to WSDL、WSDL to XML、WSDL to SOAP、WSDL to Service。

Axis2的优点:

除了 WS-Policy 之外,Axis2 还支持 WS-RM、WS-Security 和 WS-I BasicProfile,我希望在即将发布的版本中会支持它。 Axis 有更多数据绑定选项供您选择 Axis2 支持多种语言,包括 C/C++ 版本和 Java 版本。 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 服务编排支持,此处不需要)


U
Umer Hayat

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


u
user1717728

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