Was sind die Vorteile der Verwendung von Apache CXF gegenüber Apache Axis und umgekehrt?
Denken Sie daran, ich bin völlig voreingenommen (PMC-Vorsitzender von CXF), aber meine Gedanken:
Aus der strengen Perspektive "Kann das Projekt das tun, wofür ich es brauche" sind beide ziemlich gleichwertig. Es gibt einige "Randfall" -Dinge, die CXF ausführen kann, die Achse 2 nicht kann, und umgekehrt. In 90% der Anwendungsfälle funktioniert beides jedoch einwandfrei.
Daher kommt es auf eine Reihe anderer Dinge als "Kontrollkästchenfunktionen" an.
API - CXF pusht "standardbasierte" APIs (JAX-WS-konform), während Axis2 allgemein auf proprietäre Dinge abzielt. Das heißt, sogar CXF erfordert möglicherweise die Verwendung proprietärer APIs, um verschiedene Dinge außerhalb der JAX-WS-Spezifikation zu konfigurieren / zu steuern. Für REST verwendet CXF auch Standard-APIs (JAX-RS-kompatibel) anstelle von proprietären Dingen. (Ja, ich kenne die JAX-WS-Laufzeit in Axis2, aber die Tools und Dokumente und alles zielt nicht darauf ab.)
Community-Aspekte und Supportfähigkeit - CXF ist stolz darauf, auf Probleme zu reagieren und Benutzern "Fixpacks" zur Verfügung zu stellen. CXF hat 12 Fixpacks für 2.0.x (vor zwei Jahren veröffentlicht, also ungefähr alle 2 Monate), 6 Fixpacks für 2.1.x und jetzt 3 für 2.2.x. Axis2 "unterstützt" ältere Versionen nicht wirklich. Sofern kein "kritisches" Problem auftritt, müssen Sie möglicherweise bis zur nächsten großen Veröffentlichung warten (durchschnittlich etwa alle 9 bis 10 Monate), um Korrekturen zu erhalten. (obwohl Sie in beiden Fällen den Quellcode abrufen und sich selbst patchen / reparieren können. Ich muss Open Source lieben.)
Integration - CXF bietet eine viel bessere Spring-Integration, wenn Sie Spring verwenden. Die gesamte Konfiguration und dergleichen erfolgt über Spring. Außerdem neigen die Leute dazu, CXF als "einbettbarer" (ich habe Axis2 aus dieser Perspektive noch nie betrachtet) in andere Anwendungen zu betrachten. Ich bin mir nicht sicher, ob Ihnen solche Dinge wichtig sind.
Leistung - beide arbeiten sehr gut. Ich denke, die proprietäre ADB-Datenbindung von Axis2 ist etwas schneller als CXF, aber wenn Sie JAXB (wieder standardbasierte APIs) verwenden, ist CXF etwas schneller. Bei Verwendung komplexerer Szenarien wie WS-Security ist die zugrunde liegende Sicherheits- "Engine" (WSS4J) für beide gleich, sodass die Leistung vollständig vergleichbar ist.
Ich bin mir nicht sicher, ob das die Frage überhaupt beantwortet. Hoffe, es liefert zumindest einige Informationen.
:-)
Dan
quelle
Eine weitere Sache ist die Aktivität der Gemeinschaft. Vergleichen Sie den Mailinglistenverkehr für axis und cxf (2013).
Wenn dies also ein Indikator für die Nutzung ist, wird die Achse bei weitem weniger verwendet als cxf.
Vergleichen Sie die CXF- und Achsenstatistiken bei ohloh . CXF hat eine sehr hohe Aktivität, während Axis insgesamt eine geringe Aktivität aufweist.
Dies ist das Diagramm für die Anzahl der Commits im Zeitverlauf für CXF (rot) und Achse1 (grün), Achse2 (blau).
quelle
Die Vorteile von CXF:
Die Vorteile von Axis2:
Zusammenfassend: Von den oben genannten Vorteilspunkten bringt es uns zu guten Gedanken, Axis2 und CXF nach ihren eigenen Vorzügen zu vergleichen. Sie alle haben unterschiedliche, gut entwickelte Bereiche in einem bestimmten Bereich, CXF ist sehr konfigurierbar, integrierbar und verfügt über umfangreiche Toolkits, die unterstützt werden und der Java-Community nahe stehen. Axis2 hat einen Ansatz gewählt, der in vielerlei Hinsicht einem Anwendungsserver in Miniatur ähnelt. Es ist über mehrere Programmiersprachen hinweg. Aufgrund seiner Unabhängigkeit eignet sich Axis2 für eigenständige Webdienste, die von anderen Anwendungen unabhängig sind und eine Vielzahl von Funktionen bieten.
Als Entwickler müssen wir unsere Perspektive berücksichtigen, um das richtige zu wählen. Unabhängig davon, für welches Framework Sie sich entscheiden, profitieren Sie von einer aktiven und stabilen Open Source-Community. In Bezug auf die Leistung habe ich einen Test durchgeführt, der auf derselben Funktionalität basiert und im selben Webcontainer konfiguriert wurde. Das Ergebnis zeigt, dass CXF etwas besser abschneidet als Axis2. Der Einzelfall spiegelt möglicherweise nicht genau deren Fähigkeiten und Leistung wider.
In einigen Forschungsartikeln wird deutlich, dass die proprietäre ADB-Datenbindung von Axis2 etwas schneller als die von CXF ist, da sie keine zusätzliche Funktion (WS-Sicherheit) bietet. Apache AXIS2 ist ein relativ häufig verwendetes Framework, aber Apache CXF punktet im Vergleich zu anderen Web Services Frameworks im Vergleich zu einfacher Entwicklung, aktuellem Branchentrend, Leistung, Gesamt-Scorecard und anderen Funktionen (es sei denn, es wird ausdrücklich Unterstützung für Web Services Orchestration benötigt, was hier nicht erforderlich ist )
quelle
Nach meiner Erfahrung ist CXF gut darin, es in einer Spring-Umgebung zu konfigurieren. Auch die generierten Klassen sind einfach zu verstehen. Und da es aktiver ist, erhalten wir im Vergleich zu AXIS oder AXIS2 eine bessere Unterstützung.
quelle
Ein weiterer Vorteil von CXF: Es stellt sofort eine Verbindung zu Webservern mithilfe der NTLMV2-Authentifizierung her. (wird von Windows 2008 und höher verwendet) Vor der Verwendung von CXF habe ich Axis2 gehackt, um HTTPClient V4 + JCIFS zu verwenden, um dies zu ermöglichen.
quelle