Quels sont les avantages de l'utilisation d'Apache CXF par rapport à Apache Axis et vice versa?
Réponses:
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
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).
Les avantages de CXF:
Les avantages d'Axis2:
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 )
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.