Differenza tra Apache CXF e Axis


177

Quali sono i vantaggi dell'utilizzo di Apache CXF rispetto ad Apache Axis e viceversa?

Risposte:


229

Tieni presente che sono completamente di parte (PMC Chair of CXF), ma i miei pensieri:

Dal punto di vista strettamente "può il progetto fare ciò di cui ho bisogno", entrambi sono abbastanza equivalenti. Ci sono alcune cose "marginali" che CXF può fare, mentre l'Asse 2 non può e viceversa. Ma per il 90% dei casi d'uso, funzionerà bene.

Quindi, dipende da un sacco di altre cose oltre alle "caratteristiche della casella di controllo".

  • API - CXF spinge le API "standard based" (conformi a JAX-WS) mentre Axis2 in generale va verso cose proprietarie. Detto questo, anche CXF potrebbe richiedere l'uso di API proprietarie per configurare / controllare varie cose al di fuori delle specifiche JAX-WS. Per REST, CXF utilizza anche API standard (conformi a JAX-RS) invece di cose proprietarie. (Sì, sono a conoscenza del runtime JAX-WS in Axis2, ma gli strumenti, i documenti e tutto ciò non lo target)

  • Aspetti e supporto della comunità: CXF è orgoglioso di rispondere ai problemi e di rendere disponibili "fixpack" agli utenti. CXF ha eseguito 12 fixpack per 2.0.x (rilasciato due anni fa, quindi ogni 2 mesi circa), 6 fixpack per 2.1.xe ora 3 per 2.2.x. Axis2 in realtà non "supporta" le versioni precedenti. A meno che non venga riscontrato un problema "critico", potrebbe essere necessario attendere fino alla prossima versione di grandi dimensioni (in media circa ogni 9-10 mesi circa) per ottenere correzioni. (anche se, con entrambi, puoi prendere il codice sorgente e correggere / correggere te stesso. Devi amare l'open source.)

  • Integrazione - CXF ha un'integrazione Spring molto migliore se si utilizza Spring. Tutta la configurazione e così via viene effettuata tramite Spring. Inoltre, le persone tendono a considerare CXF più "integrabile" (non ho mai visto Axis2 da questa prospettiva) in altre applicazioni. Non sono sicuro che cose del genere siano importanti per te.

  • Prestazioni: entrambe si comportano molto bene. Penso che il databinding ADB proprietario di Axis2 sia un po 'più veloce di CXF, ma se usi nuovamente JAXB (API basate su standard), CXF è un po' più veloce. Quando si utilizzano scenari più complessi come WS-Security, il "motore" di sicurezza sottostante (WSS4J) è lo stesso per entrambi, quindi le prestazioni sono completamente comparabili.

Non sono sicuro che questo risponda alla domanda. Spero che almeno fornisca alcune informazioni.

:-)

Dan


10
Un recente confronto dal punto di vista di WS-Security: ibm.com/developerworks/java/library/j-jws19/index.html
Daniel Kulp

Qualche suggerimento per rendere più veloce la comunicazione HTTP quando si utilizza CXF all'interno di una rete Intranet? Connettiti a 8 servizi Web su lan
tgkprog il

57
  • Axis2 : più onnipresente sul mercato, supporta più associazioni, supporta altri linguaggi come C / C ++.
  • CXF : molto più facile da usare, più adatto a Spring, più veloce ha ottenuto il supporto per alcune estensioni WS- *.

il confronto riferito non è più disponibile: "Contenuto caricato rimosso"
maiklos

5
+1 per molto più facile da usare. IMO, CXF è anche meno dettagliato quando si generano le classi di base per un client WS / WS da WSDL. Un client Axis richiede un carico di codice che è fastidiosamente difficile da capire e da rifrattore, al contrario di quello di CXF.
Priidu Neemre,

42

Un'altra cosa è l'attività della comunità. Confronta il traffico della mailing list per axis e cxf (2013).

Quindi, se questo è un indicatore di utilizzo, allora l'asse è di gran lunga meno usato di cxf.

Confronta le statistiche CXF e Axis su ohloh . CXF ha un'attività molto elevata mentre l'Asse ha un'attività bassa in generale.

Questo è il grafico per il numero di commit nel tempo per CXF (rosso) e Axis1 (verde) Axis2 (blu). inserisci qui la descrizione dell'immagine


24

I vantaggi di CXF:

  1. CXF supporta WS-Addressing, WS-Policy, WS-RM, WS-Security e WS-I BasicProfile.
  2. CXF implementa l'API JAX-WS (secondo JAX-WS 2.0 TCK).
  3. CXF ha una migliore integrazione con Spring e altri framework.
  4. CXF ha un'elevata estensibilità in termini di strategia di intercettore.
  5. CXF ha funzionalità più configurabili tramite l'API anziché ingombranti file XML.
  6. CXF ha Bindings : SOAP, REST / HTTP e i suoi Data Bindings supportano JAXB 2.0, Aegis, per impostazione predefinita usano JAXB 2.0 e altre specifiche standard Java più vicine.
  7. CXF ha numerosi toolkit, ad esempio da Java a WSDL, da WSDL a Java, da XSD a WSDL, da WSDL a XML, da WSDL a SOAP, da WSDL a Service.

I vantaggi di Axis2:

  1. Axis2 supporta anche WS-RM, WS-Security e WS-I BasicProfile ad eccezione di WS-Policy, mi aspetto che sarà supportato in una versione futura.
  2. Axis ha più opzioni per i collegamenti di dati a tua scelta
  3. Axis2 supporta più lingue, tra cui la versione C / C ++ e la versione Java.
  4. Axis2 supporta una gamma più ampia di associazioni di dati, inclusi XMLBeans, JiBX, JaxMe e JaxBRI, nonché il proprio binding di dati nativo, ADB. storia più lunga di CXF.

In sintesi: dagli elementi di vantaggio sopra riportati, ci viene in mente di confrontare Axis2 e CXF per i loro meriti. tutti hanno diverse aree ben sviluppate in un certo campo, CXF è molto configurabile, integrabile e ha ricchi kit di strumenti supportati e vicini alla comunità Java, Axis2 ha adottato un approccio che lo rende in molti modi simile a un server delle applicazioni in miniatura. è attraverso più linguaggi di programmazione. grazie alla sua indipendenza, Axis2 si presta a servizi Web indipendenti, indipendenti da altre applicazioni e che offrono un'ampia varietà di funzionalità.

Come sviluppatore, dobbiamo accordarci sulla nostra prospettiva di scegliere quella giusta, qualunque sia il framework che scegli, avrai il vantaggio di una comunità open source attiva e stabile. In termini di prestazioni, ho fatto un test basato sulla stessa funzionalità e configurato nello stesso contenitore Web, il risultato mostra che CXF ha funzionato un po 'meglio di Axis2, il singolo caso potrebbe non rispecchiare esattamente le loro capacità e prestazioni.

In alcuni articoli di ricerca, viene rivelato che il databinding ADB proprietario di Axis2 è un po 'più veloce di CXF poiché non ha funzionalità aggiuntive (WS-Security). Apache AXIS2 è il framework relativamente più utilizzato, ma Apache CXF segna rispetto ad altri Web Services Framework considerando relativamente la facilità di sviluppo, l'attuale tendenza del settore, le prestazioni, la scorecard generale e altre funzionalità (a meno che non sia esplicitamente necessario il supporto di Web Services Orchestration, che non è richiesto qui )


2

Secondo la mia esperienza, CXF è buono in termini di configurazione in ambiente Spring. Anche le classi generate sono semplici da capire. E poiché è più attivo, otteniamo un supporto migliore rispetto ad AXIS o AXIS2.


1

Un altro vantaggio di CXF: si collega ai server Web utilizzando l'autenticazione NTLMV2 immediatamente. (usato da Windows 2008 e successivi) Prima di usare CXF, ho hackerato Axis2 per usare HTTPClient V4 + JCIFS per renderlo possibile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.