2009-08-07 57 views

Respuesta

209

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

Desde un estricto "puede hacer el proyecto lo que necesito que haga" punto de vista, ambos son bastante equivalentes. Hay algunas cosas de "borde cerrado" que CXF puede hacer que el Eje 2 no puede y viceversa. Pero para el 90% de los casos de uso, o bien funcionará bien.

Por lo tanto, se reduce a un montón de otras cosas que no sean "características de la casilla de verificación".

  • API - CXF empuja "normas basadas" (JAX-WS compatible), mientras que en general Axis2 de API va hacia las cosas de propiedad. Dicho esto, incluso CXF puede requerir usos de API propietarias para configurar/controlar varias cosas fuera de la especificación JAX-WS. Para REST, CXF también usa API estándar (que cumple con JAX-RS) en lugar de cosas propietarias. (Sí, conozco el tiempo de ejecución de JAX-WS en Axis2, pero las herramientas y documentos y todo no está dirigido a él)

  • Aspectos comunitarios y compatibilidad: CXF se enorgullece de responder a problemas y realizar "fixpacks" "disponible para los usuarios. CXF hizo 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 produzca un problema "crítico", es posible que deba esperar hasta el siguiente lanzamiento grande (promedian cada 9-10 meses más o menos) para obtener soluciones. (aunque, con cualquiera, puede tomar el código fuente y parche/arreglarse. Tengo que amar el código abierto.)

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

  • Rendimiento: ambos funcionan muy bien. Creo que el enlace de datos ADB patentado por Axis2 es un poco más rápido que CXF, pero si usas 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 de si eso responde a la pregunta en absoluto. Espero que al menos proporcione algo de información.

:-)

Dan

+10

Una comparación reciente desde el punto de vista WS-Security: http://www.ibm.com/developerworks/java/library/j-jws19/index.html –

+0

Cualquier sugerencia para hacer que la comunicación HTTP sea más rápida cuando se usa CXF dentro de un intranet? Conéctese a 8 servicios web en lan – tgkprog

50
  • Axis2: Más omnipresente en el mercado, es compatible con más ataduras, soporta otros lenguajes como C/C++.
  • CXF: Mucho más fácil de usar, más compatible con Spring, más rápido, compatible con algunas extensiones WS- *.
+0

ya no está disponible la comparación referida: "Contenido subido eliminado" – maiklos

+5

+1 para un uso mucho más fácil. IMO, CXF también es menos detallado al generar las clases básicas para WS/WS-client desde WSDL. Un cliente de Axis requiere una carga de código que es molestamente difícil de entender y refractor, a diferencia de la de CXF. –

38

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

Así que si esto es un indicador de uso de continuación del eje es, con mucho, utiliza menos que cxf.

Compare CXF and Axis statistics at ohloh. CXF tiene una actividad muy alta, mientras que Axis tiene poca actividad en general.

Este es el gráfico del número de confirmaciones en el tiempo para CXF (rojo) y Axis1 (verde) Axis2 (azul). enter image description here

1

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 mejor soporte en comparación con AXIS o AXIS2.

19

Las ventajas de CXF:

  1. CXF soportes para WS-Addressing, WS-Policy, WS-RM, WS-Security y WS-I BasicProfile.
  2. CXF implementa JAX-WS API (según JAX-WS 2.0 TCK).
  3. CXF tiene una mejor integración con Spring y otros marcos.
  4. CXF tiene una gran extensibilidad en términos de su estrategia de interceptor.
  5. CXF tiene más característica configurable a través de la API en lugar de archivos XML engorrosos.
  6. CXF tiene enlaces: SOAP, REST/HTTP, y sus enlaces de datos admiten JAXB 2.0, Aegis, de forma predeterminada utiliza JAXB 2.0 y más especificaciones estándar de Java.
  7. CXF tiene abundantes kits de herramientas, p. Java a WSDL, WSDL a Java, XSD a WSDL, WSDL a XML, WSDL a SOAP, WSDL a Service.

Las ventajas de Axis2:

  1. Axis2 también es compatible con WS-RM, WS-Security y WS-I BasicProfile excepción de WS-Policy, espero que será apoyado en un próximo 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 de Java.
  4. Axis2 admite una mayor variedad de enlaces de datos, incluidos XMLBeans, JiBX, JaxMe y JaxBRI, así como su propio enlace de datos nativo, ADB. historial más largo que CXF.

En resumen: Desde arriba artículos ventaja, que nos lleva a unos buenos pensamientos para comparar Axis2 y CXF por sus propios méritos. todos ellos tienen diferentes áreas bien desarrolladas en un campo determinado, CXF es muy configurable, integrable y tiene kits de herramientas ricas y compatibles con la comunidad Java, Axis2 ha adoptado un enfoque que lo hace parecerse en muchos aspectos a un servidor de aplicaciones en miniatura. está en 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 la correcta, 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, realicé una prueba basada en la misma funcionalidad y configed en el mismo contenedor web, el resultado muestra que CXF tuvo un rendimiento un poco mejor que Axis2, el único caso puede no reflejar exactamente sus capacidades y rendimiento.

En algunos artículos de investigación, revela que el enlace de datos ADB propiedad de Axis2 es un poco más rápido que CXF ya que no tiene características adicionales (WS-Security). Apache AXIS2 es el marco relativamente más utilizado, pero Apache CXF puntúa más que otros frameworks de servicios web comparando la facilidad de desarrollo, la tendencia actual de la industria, el rendimiento, el cuadro de mando general y otras características (a menos que exista explícitamente soporte de Web Services Orchestration, que no es necesario aquí)

1

Otra ventaja de CXF: se conecta a los servidores web utilizando la autenticación NTLMV2 lista para usar. (utilizado por Windows 2008 & arriba) Antes de usar CXF, pirateé Axis2 para usar HTTPClient V4 + JCIFS para hacerlo posible.