Unterschied zwischen Apache CXF und Axis

177

Was sind die Vorteile der Verwendung von Apache CXF gegenüber Apache Axis und umgekehrt?

Prabhu R.
quelle

Antworten:

229

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

Daniel Kulp
quelle
10
Ein aktueller Vergleich vom Standpunkt der WS-Sicherheit: ibm.com/developerworks/java/library/j-jws19/index.html
Daniel Kulp
Gibt es Hinweise darauf, wie die HTTP-Kommunikation bei Verwendung von CXF in einem Intranet beschleunigt werden kann?
Stellen Sie
57
  • Axis2 : Auf dem Markt allgegenwärtiger, unterstützt mehr Bindungen und unterstützt andere Sprachen wie C / C ++.
  • CXF : Viel einfacher zu bedienen, frühlingsfreundlicher, schneller Unterstützung für einige WS- * -Erweiterungen.
vsg
quelle
Der genannte Vergleich ist nicht mehr verfügbar: "Hochgeladener Inhalt entfernt"
maiklos
5
+1 für viel einfacher zu bedienen. IMO, CXF ist auch weniger ausführlich, wenn die Basisklassen für einen WS / WS-Client aus WSDL generiert werden. Ein Axis-Client benötigt eine Menge Code, der im Gegensatz zu CXF ärgerlich schwer zu verstehen und zu brechen ist.
Priidu Neemre
42

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). Geben Sie hier die Bildbeschreibung ein

Christian Schneider
quelle
24

Die Vorteile von CXF:

  1. CXF unterstützt WS-Adressierung, WS-Richtlinie, WS-RM, WS-Sicherheit und WS-I BasicProfile.
  2. CXF implementiert die JAX-WS-API (gemäß JAX-WS 2.0 TCK).
  3. CXF lässt sich besser in Spring und andere Frameworks integrieren.
  4. CXF hat eine hohe Erweiterbarkeit in Bezug auf seine Interceptor-Strategie.
  5. CXF verfügt über mehr konfigurierbare Funktionen über die API anstelle von umständlichen XML-Dateien.
  6. CXF verfügt über Bindungen: SOAP, REST / HTTP, und seine Datenbindungen unterstützen JAXB 2.0, Aegis. Standardmäßig wird JAXB 2.0 und eine engere Java-Standardspezifikation verwendet.
  7. CXF verfügt über zahlreiche Toolkits, z. B. Java zu WSDL, WSDL zu Java, XSD zu WSDL, WSDL zu XML, WSDL zu SOAP, WSDL zu Service.

Die Vorteile von Axis2:

  1. Axis2 unterstützt auch WS-RM, WS-Security und WS-I BasicProfile mit Ausnahme von WS-Policy. Ich gehe davon aus, dass es in einer kommenden Version unterstützt wird.
  2. Axis hat mehr Optionen für Datenbindungen zur Auswahl
  3. Axis2 unterstützt mehrere Sprachen, einschließlich der C / C ++ - Version und der Java-Version.
  4. Axis2 unterstützt eine größere Auswahl an Datenbindungen, einschließlich XMLBeans, JiBX, JaxMe und JaxBRI sowie die eigene native Datenbindung ADB. längere Geschichte als CXF.

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 )

Ajithparamban
quelle
2

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.

Sudip7
quelle
1

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.

user1717728
quelle