与 Apache Axis 相比,使用 Apache CXF 有哪些优势,反之亦然?
请记住,我完全有偏见(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)是相同的,因此性能完全可比。
不确定这是否完全回答了这个问题。希望它至少提供一些信息。
:-)
担