Différence entre Apache CXF et Axis


177

Quels sont les avantages de l'utilisation d'Apache CXF par rapport à Apache Axis et vice versa?

Réponses:


229

Gardez à l'esprit que je suis complètement partial (président PMC de CXF), mais mes pensées:

D'un point de vue strictement «le projet peut-il faire ce dont j'ai besoin», les deux sont assez équivalents. Il y a des choses de «cas de pointe» que CXF peut faire que l'Axe 2 ne peut pas et vice versa. Mais pour 90% des cas d'utilisation, l'un ou l'autre fonctionnera correctement.

Ainsi, cela se résume à un tas d'autres choses autres que les "fonctionnalités de case à cocher".

  • API - CXF pousse les API «basées sur des standards» (conformes à JAX-WS) tandis qu'Axis2 général se dirige vers des choses propriétaires. Cela dit, même CXF peut nécessiter l'utilisation d'API propriétaires pour configurer / contrôler diverses choses en dehors des spécifications JAX-WS. Pour REST, CXF utilise également des API standard (compatibles JAX-RS) au lieu de choses propriétaires. (Oui, je connais le runtime JAX-WS dans Axis2, mais les outils, la documentation et tout ne le ciblent pas)

  • Aspects communautaires et prise en charge - CXF est fier de répondre aux problèmes et de mettre des «correctifs» à la disposition des utilisateurs. CXF a créé 12 groupes de correctifs pour 2.0.x (publiés il y a deux ans, donc environ tous les 2 mois), 6 groupes de correctifs pour 2.1.x, et maintenant 3 pour 2.2.x. Axis2 ne "supporte" pas vraiment les anciennes versions. À moins qu'un problème «critique» ne soit rencontré, vous devrez peut-être attendre la prochaine grande version (en moyenne tous les 9 à 10 mois environ) pour obtenir des correctifs. (bien que, avec l'un ou l'autre, vous pouvez récupérer le code source et corriger / réparer vous-même. Je dois aimer l'open source.)

  • Intégration - CXF a une bien meilleure intégration Spring si vous utilisez Spring. Toute la configuration et autres se font via Spring. De plus, les gens ont tendance à considérer CXF comme plus "intégrable" (je n'ai jamais regardé Axis2 de ce point de vue) dans d'autres applications. Je ne sais pas si des choses comme ça comptent pour vous.

  • Performance - ils fonctionnent tous les deux très bien. Je pense que la liaison de données ADB propriétaire d'Axis2 est un peu plus rapide que CXF, mais si vous utilisez à nouveau JAXB (API basées sur des normes), CXF est un peu plus rapide. Lors de l'utilisation de scénarios plus complexes comme WS-Security, le «moteur» de sécurité sous-jacent (WSS4J) est le même pour les deux, donc les performances sont complètement comparables.

Je ne sais pas si cela répond du tout à la question. J'espère qu'il fournit au moins quelques informations.

:-)

Dan


10
Une comparaison récente du point de vue de WS-Security: ibm.com/developerworks/java/library/j-jws19/index.html
Daniel Kulp

Des conseils pour accélérer la communication HTTP lors de l'utilisation de CXF dans un intranet? Connectez-vous à 8 Webservices sur LAN
tgkprog

57
  • Axis2 : Plus omniprésent sur le marché, prend en charge plus de liaisons, prend en charge d'autres langages comme C / C ++.
  • CXF : Beaucoup plus facile à utiliser, plus convivial avec Spring, plus rapide avec le support de certaines extensions WS- *.

la comparaison référée n'est plus disponible: "Contenu téléchargé supprimé"
maiklos

5
+1 pour beaucoup plus facile à utiliser. IMO, CXF est également moins verbeux lors de la génération des classes de base pour un client WS / WS à partir de WSDL. Un client Axis nécessite une charge de code qui est extrêmement difficile à comprendre et à réfracter, contrairement à celle de CXF.
Priidu Neemre

42

Une autre chose est l'activité de la communauté. Comparez le trafic de la liste de diffusion pour axis et cxf (2013).

Donc, s'il s'agit d'un indicateur d'utilisation, alors axis est de loin moins utilisé que cxf.

Comparez les statistiques CXF et Axis chez ohloh . CXF a une activité très élevée tandis qu'Axis a une activité globale faible.

Voici le graphique du nombre de validations dans le temps pour CXF (rouge) et Axis1 (vert) Axis2 (bleu). entrez la description de l'image ici


24

Les avantages de CXF:

  1. CXF prend en charge WS-Addressing, WS-Policy, WS-RM, WS-Security et WS-I BasicProfile.
  2. CXF implémente l'API JAX-WS (selon JAX-WS 2.0 TCK).
  3. CXF a une meilleure intégration avec Spring et d'autres frameworks.
  4. CXF a une grande extensibilité en termes de stratégie d'intercepteur.
  5. CXF a une fonctionnalité plus configurable via l'API au lieu de fichiers XML encombrants.
  6. CXF a des liaisons : SOAP, REST / HTTP et ses liaisons de données prennent en charge JAXB 2.0, Aegis, par défaut, il utilise JAXB 2.0 et une spécification standard Java plus proche.
  7. CXF dispose de nombreuses boîtes à outils, par exemple Java vers WSDL, WSDL vers Java, XSD vers WSDL, WSDL vers XML, WSDL vers SOAP, WSDL vers Service.

Les avantages d'Axis2:

  1. Axis2 prend également en charge WS-RM, WS-Security et WS-I BasicProfile, sauf pour WS-Policy, je pense qu'il sera pris en charge dans une version à venir.
  2. Axis a plus d'options pour les liaisons de données pour votre choix
  3. Axis2 prend en charge plusieurs langages, y compris la version C / C ++ et la version Java.
  4. Axis2 prend en charge une plus large gamme de liaisons de données, notamment XMLBeans, JiBX, JaxMe et JaxBRI, ainsi que sa propre liaison de données native, ADB. histoire plus longue que CXF.

En résumé: À partir des éléments d'avantage ci-dessus, cela nous amène à une bonne réflexion pour comparer Axis2 et CXF sur leurs propres mérites. ils ont tous différents domaines bien développés dans un certain domaine, CXF est très configurable, intégrable et dispose de riches kits d'outils pris en charge et proche de la communauté Java, Axis2 a adopté une approche qui le fait ressembler à bien des égards à un serveur d'application en miniature. c'est à travers plusieurs langages de programmation. en raison de son indépendance, Axis2 se prête à des services web autonomes, indépendants des autres applications, et offre une grande variété de fonctionnalités.

En tant que développeur, nous devons accorder notre point de vue pour choisir le bon, quel que soit le framework que vous choisissez, vous bénéficierez d'une communauté open source active et stable. En termes de performances, j'ai fait un test basé sur les mêmes fonctionnalités et configuré dans le même conteneur Web, le résultat montre que CXF a un peu mieux fonctionné qu'Axis2, le cas unique peut ne pas refléter exactement leurs capacités et leurs performances.

Dans certains articles de recherche, il révèle que la liaison de données ADB propriétaire d'Axis2 est un peu plus rapide que CXF car elle n'a pas de fonctionnalité supplémentaire (WS-Security). Apache AXIS2 est le framework relativement le plus utilisé, mais Apache CXF se classe comparativement à d'autres frameworks de services Web en tenant compte de la facilité de développement, de la tendance actuelle du secteur, des performances, de la carte de performance globale et d'autres fonctionnalités (sauf si la prise en charge de Web Services Orchestration est explicitement nécessaire, ce qui n'est pas requis ici )


2

D'après mon expérience, CXF est bon en termes de configuration dans l'environnement Spring. Les classes générées sont également simples à comprendre. Et comme il est plus actif, nous obtenons un meilleur support par rapport à AXIS ou AXIS2.


1

Autre avantage de CXF: il se connecte aux serveurs Web en utilisant l'authentification NTLMV2 prête à l'emploi. (utilisé par Windows 2008 et plus) Avant d'utiliser CXF, j'ai piraté Axis2 pour utiliser HTTPClient V4 + JCIFS pour rendre cela possible.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.