Differenza tra Apache CXF e Axis

Quali sono i vantaggi dell’utilizzo di Apache CXF su Apache Axis e viceversa?

Tenete a mente, sono completamente di parte (PMC Chair of CXF), ma i miei pensieri:

Dal punto di vista strettamente “il progetto può fare ciò che ho bisogno di fare”, entrambi sono abbastanza equivalenti. Ci sono alcune cose “limite” che CXF può fare con quell’Asse 2 e viceversa. Ma per il 90% dei casi d’uso, funzionerà bene.

Quindi, si tratta di un mucchio di altre cose oltre alle “caratteristiche della casella di controllo”.

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

  • Aspetti comunitari e supportabilità: CXF è orgogliosa di rispondere ai problemi e di rendere disponibili “fixpack” agli utenti. CXF ha fatto 12 fixpacks per 2.0.x (rilasciato due anni fa, quindi circa ogni 2 mesi), 6 fixpack a 2.1.xe ora 3 per 2.2.x. Axis2 in realtà non “supporta” versioni precedenti. A meno che non venga colpito un problema “critico”, potrebbe essere necessario attendere fino alla prossima versione più grande (in media circa ogni 9-10 mesi circa) per ottenere le 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 molto migliore con Spring se usi Spring. Tutta la configurazione e tale è fatta attraverso Spring. Inoltre, le persone tendono a considerare CXF più “embeddable” (non ho mai visto Axis2 da questa prospettiva) in altre applicazioni. Non sono sicuro che le 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 JAXB (di nuovo basato su API 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 se questo risponde alla domanda. Spero che almeno fornisca alcune informazioni.

🙂

Dan

  • Axis2 : più onnipresente sul mercato, supporta più binding, supporta altri linguaggi come C / C ++.
  • CXF : Molto più facile da usare, più compatibile con Spring, supporto più veloce per alcune estensioni WS- *.

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

  • Asse utente 50-100 mail al mese
  • CXF utente 400-500 mail al mese

Quindi, se questo è un indicatore di utilizzo, l’asse è di gran lunga meno utilizzato di cxf.

Confronta le statistiche CXF e Axis su ohloh . CXF ha un’attività molto elevata mentre l’asse ha una bassa attività nel complesso.

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

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 intercettazione.
  5. CXF ha funzionalità più configurabili tramite l’API invece di file XML ingombranti.
  6. CXF ha Bindings: SOAP, REST / HTTP e le sue associazioni di dati supportano JAXB 2.0, Aegis, per impostazione predefinita utilizza JAXB 2.0 e più specifiche Java standard chiuse.
  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 binding di dati per la tua scelta
  3. Axis2 supporta più lingue, inclusa la versione C / C ++ e la versione Java.
  4. Axis2 supporta una gamma più ampia di associazioni di dati, tra cui XMLBeans, JiBX, JaxMe e JaxBRI nonché il proprio binding di dati nativi, ADB. storia più lunga di CXF.

In sintesi: dagli elementi di vantaggio di cui sopra, ci porta ad un buon pensiero per confrontare Axis2 e CXF sui propri meriti. hanno tutti diverse aree ben sviluppate in un determinato campo, CXF è molto configurabile, integrabile e ricco di kit di strumenti supportati e vicini alla comunità Java, Axis2 ha adottato un approccio che lo rende in molti modi simile a un server di applicazioni in miniatura. è attraverso più linguaggi di programmazione. Grazie alla sua indipendenza, Axis2 si presta a servizi Web che sono indipendenti, indipendenti da altre applicazioni e offrono un’ampia varietà di funzionalità.

Come sviluppatore, abbiamo bisogno di accordare la nostra prospettiva per scegliere quella giusta, qualunque sia la struttura che scegli, avrai il vantaggio di una comunità open source triggers e stabile. In termini di prestazioni, ho eseguito un test basato sulla stessa funzionalità e configurato nello stesso contenitore web, il risultato mostra che CXF ha ottenuto risultati leggermente migliori di Axis2, il singolo caso potrebbe non rispecchiare esattamente le loro capacità e prestazioni.

In alcuni articoli di ricerca, rivela che il databinding ADB proprietario di Axis2 è leggermente più veloce di CXF poiché non ha funzionalità aggiuntive (WS-Security). Apache AXIS2 è un framework relativamente più utilizzato, ma i punteggi di Apache CXF rispetto ad altri Web Services Framework considerano relativamente la facilità di sviluppo, l’attuale tendenza del settore, le prestazioni, la scorecard complessiva e altre funzionalità (a meno che non sia necessario il supporto di Web Services Orchestration, che non è necessario qui )

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.

Un altro vantaggio di CXF: si collega ai server Web utilizzando l’autenticazione NTLMV2 out of the box. (utilizzato da Windows 2008 e versioni successive) Prima di utilizzare CXF, ho hackerato Axis2 per utilizzare HTTPClient V4 + JCIFS per rendere ciò ansible.