Diferencia entre Apache CXF y Axis

177

¿Cuáles son las ventajas de usar Apache CXF sobre Apache Axis y viceversa?

Prabhu R
fuente

Respuestas:

229

Tenga en cuenta que soy completamente parcial (Presidente de PMC de CXF), pero mis pensamientos:

Desde una perspectiva estrictamente "puede el proyecto hacer lo que necesito que haga", ambos son bastante equivalentes. Hay algunas cosas de "caso límite" que CXF puede hacer que Axis 2 no puede hacer y viceversa. Pero para el 90% de los casos de uso, cualquiera funcionará bien.

Por lo tanto, se reduce a un montón de otras cosas además de las "características de la casilla de verificación".

  • API: CXF impulsa las API "basadas en estándares" (compatibles con JAX-WS), mientras que Axis2 general se dirige hacia cosas propietarias. Dicho esto, incluso CXF puede requerir el uso de API patentadas para configurar / controlar varias cosas fuera de la especificación JAX-WS. Para REST, CXF también usa API estándar (que cumplen con JAX-RS) en lugar de cosas propietarias. (Sí, estoy al tanto del tiempo de ejecución JAX-WS en Axis2, pero las herramientas y los documentos y todo no está dirigido a él)

  • Aspectos y compatibilidad de la comunidad: CXF se enorgullece de responder a los problemas y poner a disposición de los usuarios "fixpacks". CXF realizó 12 fixpacks para 2.0.x (lanzado hace dos años, aproximadamente cada 2 meses), 6 fixpacks para 2.1.x, y ahora 3 para 2.2.x. Axis2 realmente no "admite" versiones anteriores. A menos que se resuelva un problema "crítico", es posible que deba esperar hasta el próximo gran lanzamiento (tienen un promedio de aproximadamente 9-10 meses más o menos) para obtener soluciones. (aunque, con cualquiera de los dos, puede tomar el código fuente y parchearlo / arreglarlo usted mismo. Tengo que amar el código abierto).

  • Integración: CXF tiene una integración Spring mucho mejor si usa Spring. Toda la configuración y tal se realiza a través de Spring. Además, las personas tienden a considerar CXF como más "integrable" (nunca he visto Axis2 desde esta perspectiva) en otras aplicaciones. No estoy seguro si cosas como esa te importan.

  • Rendimiento: ambos funcionan muy bien. Creo que el enlace de datos ADB patentado de Axis2 es un poco más rápido que CXF, pero si usa JAXB (API basadas en estándares nuevamente), CXF es un poco más rápido. Cuando se utilizan escenarios más complejos como WS-Security, el "motor" de seguridad subyacente (WSS4J) es el mismo para ambos, por lo que el rendimiento es completamente comparable.

No estoy seguro si eso responde a la pregunta en absoluto. Espero que al menos proporcione alguna información.

:-)

Dan

Daniel Kulp
fuente
10
Una comparación reciente desde un punto de vista de WS-Security: ibm.com/developerworks/java/library/j-jws19/index.html
Daniel Kulp
¿Algún indicador para hacer que la comunicación HTTP sea más rápida cuando se usa CXF dentro de una intranet? Conéctese a 8 servicios web a través de lan
tgkprog
57
  • Axis2 : más ubicuo en el mercado, admite más enlaces, admite otros lenguajes como C / C ++.
  • CXF : Mucho más fácil de usar, más amigable con Spring, más rápido obtuvo soporte para algunas extensiones WS- *.
vsg
fuente
la referencia de referencia ya no está disponible: "Contenido subido eliminado"
maiklos
55
+1 para mucho más fácil de usar. En mi opinión, CXF también es menos detallado al generar las clases básicas para un cliente WS / WS desde WSDL. Un cliente Axis requiere una carga de código que es molestamente difícil de entender y refractor, a diferencia de CXF.
Priidu Neemre
42

Una cosa más es la actividad de la comunidad. Compare el tráfico de la lista de correo para axis y cxf (2013).

Entonces, si este es un indicador de uso, el eje es mucho menos utilizado que cxf.

Compare las estadísticas de CXF y Axis en ohloh . CXF tiene una actividad muy alta, mientras que Axis tiene una actividad baja en general.

Este es el gráfico del número de confirmaciones a lo largo del tiempo para CXF (rojo) y Axis1 (verde) Axis2 (azul). ingrese la descripción de la imagen aquí

Christian Schneider
fuente
24

Las ventajas de CXF:

  1. CXF es compatible con WS-Addressing, WS-Policy, WS-RM, WS-Security y WS-I BasicProfile.
  2. CXF implementa la API JAX-WS (según JAX-WS 2.0 TCK).
  3. CXF tiene una mejor integración con Spring y otros frameworks.
  4. CXF tiene alta extensibilidad en términos de su estrategia de interceptor.
  5. CXF tiene más funciones configurables a través de la API en lugar de engorrosos archivos XML.
  6. CXF tiene enlaces: SOAP, REST / HTTP, y sus enlaces de datos son compatibles con JAXB 2.0, Aegis, por defecto usa JAXB 2.0 y más especificaciones estándar Java.
  7. CXF tiene abundantes kits de herramientas, por ejemplo, Java a WSDL, WSDL a Java, XSD a WSDL, WSDL a XML, WSDL a SOAP, WSDL a Servicio.

Las ventajas de Axis2:

  1. Axis2 también es compatible con WS-RM, WS-Security y WS-I BasicProfile, excepto para WS-Policy, espero que sea compatible en una próxima versión.
  2. Axis tiene más opciones para enlaces de datos para su elección
  3. Axis2 admite varios idiomas, incluida la versión C / C ++ y la versión Java.
  4. Axis2 admite una gama más amplia de enlaces de datos, incluidos XMLBeans, JiBX, JaxMe y JaxBRI, así como su propio enlace de datos nativo, ADB. historia más larga que CXF.

En resumen: desde los elementos de ventaja anteriores, nos lleva a una buena idea comparar Axis2 y CXF por sus propios méritos. todos tienen diferentes áreas bien desarrolladas en un determinado campo, CXF es muy configurable, integrable y tiene kits de herramientas ricos compatibles y cercanos a la comunidad Java, Axis2 ha adoptado un enfoque que lo hace en muchos aspectos se asemeja a un servidor de aplicaciones en miniatura. Es a través de múltiples lenguajes de programación. Debido a su independencia, Axis2 se presta a servicios web independientes, independientes de otras aplicaciones, y ofrece una amplia variedad de funcionalidades.

Como desarrollador, debemos acordar nuestra perspectiva para elegir el correcto, cualquiera que sea el marco que elija, tendrá el beneficio de una comunidad de código abierto activa y estable. En términos de rendimiento, hice una prueba basada en la misma funcionalidad y en el mismo contenedor web, el resultado muestra que CXF funcionó un poco mejor que Axis2, el caso único puede no reflejar exactamente sus capacidades y rendimiento.

En algunos artículos de investigación, revela que el enlace de datos ADB patentado de Axis2 es un poco más rápido que CXF ya que no tiene una característica adicional (WS-Security). Apache AXIS2 es el marco relativamente más utilizado, pero Apache CXF califica sobre otros marcos de servicios web comparativamente teniendo en cuenta la facilidad de desarrollo, la tendencia actual de la industria, el rendimiento, el cuadro de mando general y otras características (a menos que haya un soporte de orquestación de servicios web que sea explícitamente necesario, lo cual no es necesario aquí )

ajithparamban
fuente
2

Según mi experiencia, CXF es bueno en términos de configuración en el entorno Spring. También las clases generadas son simples de entender. Y como es más activo, obtenemos un mejor soporte en comparación con AXIS o AXIS2.

Sudip7
fuente
1

Otra ventaja de CXF: se conecta a los servidores web mediante la autenticación NTLMV2 lista para usar. (utilizado por Windows 2008 y versiones posteriores) Antes de usar CXF, pirateé Axis2 para usar HTTPClient V4 + JCIFS para hacer esto posible.

usuario1717728
fuente