与 Apache Axis 相比,使用 Apache CXF 有哪些优势,反之亦然?
6 回答
请记住,我完全有偏见(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)是相同的,因此性能完全可比。
不确定这是否完全回答了这个问题。希望它至少提供一些信息。
:-)
担
- Axis2:在市场上更普遍,支持更多绑定,支持其他语言,如 C/C++。
- CXF:更容易使用,对 Spring 更友好,更快地获得对某些 WS-* 扩展的支持。
另一件事是社区的活动。比较 axis 和 cxf (2013) 的邮件列表流量。
因此,如果这是任何使用指标,那么轴的使用率远远低于 cxf。
在 ohloh 比较 CXF 和 Axis 统计数据。CXF 的活跃度非常高,而 Axis 的活跃度总体较低。
这是 CXF(红色)和 Axis1(绿色)Axis2(蓝色)的提交数量随时间变化的图表。
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 服务编排支持,此处不需要)
根据我的经验,CXF 在将其配置到 Spring 环境方面做得很好。生成的类也很容易理解。由于它更活跃,与 AXIS 或 AXIS2 相比,我们得到了更好的支持。
CXF 的另一个优点:它使用开箱即用的 NTLMV2 身份验证连接到 Web 服务器。(由 Windows 2008 及更高版本使用)在使用 CXF 之前,我破解了 Axis2 以使用 HTTPClient V4 + JCIFS 来实现这一点。