web-dev-qa-db-fra.com

Différence entre Apache CXF et Axis

Quels sont les avantages d'utiliser Apache CXF sur Apache Axis et inversement?

172
Prabhu R

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

223
Daniel Kulp
  • Axis2: Plus omniprésent sur le marché, prend en charge davantage de liaisons, prend en charge d'autres langages tels que C/C++.
  • CXF : Beaucoup plus facile à utiliser, plus compatible avec Spring, plus rapide avec le support de certaines extensions WS- *.
53
vsg

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). enter image description here

41

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 (conformément à 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 plus de fonctionnalités configurables 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 plus proche Java).
  7. CXF dispose de nombreux outils, par exemple Java à WSDL, WSDL à Java, XSD à WSDL, WSDL à XML, WSDL à SOAP, WSDL à Service).

Les avantages de Axis2:

  1. Axis2 prend également en charge WS-RM, WS-Security et WS-I BasicProfile, à l'exception de 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 langues, y compris la version C/C++ et la version Java.
  4. Axis2 prend en charge un plus grand nombre 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é: 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. )

23
ajithparamban

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.

2
Sudip7

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.

1
user1717728