Quels sont les avantages d'utiliser Apache CXF sur Apache Axis et inversement?
Gardez à l'esprit que je suis totalement partial (président du CMC de la CXF), mais ce que je pense:
D'un point de vue strictement "le projet peut-il faire ce dont j'ai besoin", les deux sont assez équivalents. CXF peut faire ce que l’axe 2 ne peut pas et vice versa. Mais pour 90% des cas d'utilisation, cela fonctionnera bien.
Ainsi, cela revient à un tas d'autres choses que les "fonctionnalités de case à cocher".
API - CXF insiste sur les API "basées sur des normes" (compatibles JAX-WS) alors qu'Axis2 general s'oriente vers des éléments 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 fonctions propriétaires. (Oui, je suis conscient de l'exécution de JAX-WS dans Axis2, mais l'outillage, la documentation et tout ce qui ne la cible pas)
Aspects communautaires et capacité de prise en charge - CXF est fier de répondre aux problèmes et de mettre des "correctifs" à la disposition des utilisateurs. CXF a produit 12 groupes de correctifs pour la version 2.0.x (publiés il y a deux ans, soit environ tous les 2 mois), 6 groupes de correctifs vers la version 2.1.x et maintenant 3 pour la version 2.2.x. Axis2 ne "supporte" pas vraiment les anciennes versions. À moins qu'un problème "critique" ne survienne, vous devrez peut-être attendre la prochaine grande publication (environ tous les 9 à 10 mois environ) pour résoudre ce problème. (Bien que, avec soit, vous pouvez récupérer le code source et le correctif/corriger vous-même. Je dois aimer open source.)
Intégration - CXF a une intégration Spring bien meilleure si vous utilisez Spring. Toute la configuration et tel est fait par Spring. De plus, les gens ont tendance à considérer CXF comme plus "intégrable" (je n'ai jamais regardé Axis2 sous cet angle) dans d'autres applications. Je ne sais pas si cela vous importe.
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ée sur des normes), CXF est un peu plus rapide. Lorsque vous utilisez des scénarios plus complexes tels que WS-Security, le "moteur" de sécurité sous-jacent (WSS4J) est le même pour les deux; les performances sont donc tout à fait comparables.
Pas sûr que cela réponde à la question du tout. 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, l'axe est de loin moins utilisé que cxf.
Comparer les statistiques CXF et Axis à ohloh . CXF a une activité très élevée alors que Axis a une activité globale faible.
Il s'agit du graphique du nombre de validations dans le temps pour CXF (rouge) et Axis1 (vert) Axis2 (bleu).
Les avantages de CXF:
Les avantages de Axis2:
En résumé: Parmi les avantages ci-dessus, il nous incite à bien comparer Axis2 et CXF selon leurs mérites respectifs. CXF est très configurable, peut être intégré et est doté de riches kits d’outils pris en charge et proche de la Java, Axis2 a adopté une approche qui le rend inédit moyens ressemblent à un serveur d’applications en miniature, qu’ils soient multi-langages de programmation, parce que son indépendance lui permet de s’adapter à des services Web autonomes, indépendants des autres applications et offrant une grande variété de fonctionnalités.
En tant que développeur, nous devons nous adapter à notre perspective pour choisir le bon. Quel que soit le cadre 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 la même fonctionnalité et configuré dans le même conteneur Web. Le résultat montre que CXF s’est légèrement mieux comporté que Axis2; le cas individuel peut ne pas refléter exactement leurs capacités et leurs performances.
Certains articles de recherche révèlent que la liaison de données propriétaire ADB d’Axis2 est un peu plus rapide que CXF car elle n’a pas de fonction supplémentaire (WS-Security). Apache AXIS2 est le framework le plus utilisé, mais Apache CXF dépasse les autres frameworks de services Web en termes de facilité de développement, de tendances actuelles du secteur, de performances, de fiche de score globale et d’autres fonctionnalités (à moins que Web Services Orchestration ne soit explicitement nécessaire, ce qui n’est pas nécessaire ici. )
Selon mon expérience, CXF est bien en termes de configuration dans un environnement Spring. De plus, les classes générées sont simples à comprendre. Et comme il est plus actif, nous obtenons un meilleur support par rapport à AXIS ou AXIS2.
Un autre avantage de CXF: il se connecte aux serveurs Web à l'aide de l'authentification NTLMV2 prête à l'emploi. (utilisé par Windows 2008 et supérieur) Avant d’utiliser CXF, j’ai piraté Axis2 pour utiliser HTTPClient V4 + JCIFS afin de rendre cela possible.