Perbedaan antara Apache CXF dan Axis

177

Apa keuntungan menggunakan Apache CXF dibandingkan Apache Axis dan sebaliknya?

Prabhu R
sumber

Jawaban:

229

Perlu diingat, saya benar-benar bias (PMC Chair of CXF), tetapi pikiran saya:

Dari sudut pandang "dapatkah proyek melakukan apa yang saya perlukan", keduanya cukup setara. Ada beberapa "kasus tepi" hal-hal yang dapat dilakukan CXF yang Axis 2 tidak bisa dan sebaliknya. Tetapi untuk 90% kasus penggunaan, keduanya akan berfungsi dengan baik.

Dengan demikian, ia datang ke banyak hal lain selain "fitur kotak centang".

  • API - CXF mendorong API "berbasis standar" (JAX-WS compliant) sedangkan Axis2 general mengarah ke hal-hal yang menjadi hak milik. Yang mengatakan, bahkan CXF mungkin memerlukan penggunaan API milik untuk mengkonfigurasi / mengendalikan berbagai hal di luar spesifikasi JAX-WS. Untuk REST, CXF juga menggunakan standar API (JAX-RS compliant) alih-alih hal-hal kepemilikan. (Ya, saya mengetahui runtime JAX-WS di Axis2, tetapi tooling dan dokumen dan semuanya tidak menargetkannya)

  • Aspek dan daya dukung komunitas - CXF bangga karena merespons masalah dan menyediakan "paket perbaikan" bagi pengguna. CXF melakukan 12 fixpacks untuk 2.0.x (dirilis dua tahun lalu, jadi setiap 2 bulan), 6 fixpacks ke 2.1.x, dan sekarang 3 untuk 2.2.x. Axis2 tidak benar-benar "mendukung" versi lama. Kecuali jika masalah "kritis" terjadi, Anda mungkin perlu menunggu sampai rilis besar berikutnya (rata-rata setiap 9-10 bulan) untuk mendapatkan perbaikan. (walaupun, dengan salah satu, Anda dapat mengambil kode sumber dan menambal / memperbaiki diri sendiri. Anda harus mencintai open source.)

  • Integrasi - CXF memiliki integrasi Spring yang jauh lebih baik jika Anda menggunakan Spring. Semua konfigurasi dan semacamnya dilakukan melalui Spring. Juga, orang-orang cenderung menganggap CXF sebagai lebih "embeddable" (Saya tidak pernah melihat Axis2 dari perspektif ini) ke dalam aplikasi lain. Tidak yakin apakah hal-hal seperti itu penting bagi Anda.

  • Kinerja - keduanya bekerja dengan sangat baik. Saya pikir penyatuan data ADB milik Axis2 sedikit lebih cepat daripada CXF, tetapi jika Anda menggunakan JAXB (API berbasis standar lagi), CXF sedikit lebih cepat. Ketika menggunakan skenario yang lebih kompleks seperti WS-Security, "engine" keamanan yang mendasarinya (WSS4J) adalah sama untuk keduanya sehingga kinerjanya benar-benar sebanding.

Tidak yakin apakah itu menjawab pertanyaan sama sekali. Semoga setidaknya memberikan beberapa informasi.

:-)

Dan

Daniel Kulp
sumber
10
Sebuah perbandingan terbaru dari sudut pandang WS-Security: ibm.com/developerworks/java/library/j-jws19/index.html
Daniel Kulp
Adakah petunjuk untuk membuat komunikasi HTTP lebih cepat saat menggunakan CXF dalam intranet? Terhubung ke 8 Webservice melalui lan
tgkprog
57
  • Axis2 : Lebih ada di mana-mana di pasar, mendukung lebih banyak binding, mendukung bahasa lain seperti C / C ++.
  • CXF : Jauh lebih mudah digunakan, lebih ramah terhadap Musim Semi, lebih cepat mendapat dukungan untuk beberapa ekstensi WS- *.
vsg
sumber
perbandingan yang dirujuk tidak tersedia lagi: "Konten yang Diunggah Dihapus"
maiklos
5
+1 agar lebih mudah digunakan. IMO, CXF juga kurang bertele-tele saat membuat kelas dasar untuk klien WS / WS dari WSDL. Klien Axis membutuhkan buttload kode yang sulit dimengerti dan dibiaskan, berbeda dengan CXF.
Priidu Neemre
42

Satu hal lagi adalah aktivitas masyarakat. Bandingkan lalu lintas milis untuk sumbu dan cxf (2013).

Jadi jika ini adalah indikator penggunaan maka sumbu jauh lebih sedikit digunakan daripada cxf.

Bandingkan statistik CXF dan Axis di ohloh . CXF memiliki aktivitas yang sangat tinggi sementara Axis memiliki aktivitas yang rendah secara keseluruhan.

Ini adalah bagan untuk jumlah komit dari waktu ke waktu untuk CXF (merah) dan Sumbu1 (hijau) Sumbu2 (biru). masukkan deskripsi gambar di sini

Christian Schneider
sumber
24

Keuntungan CXF:

  1. Dukungan CXF untuk WS-Addressing, WS-Policy, WS-RM, WS-Security dan WS-I BasicProfile.
  2. CXF mengimplementasikan JAX-WS API (menurut JAX-WS 2.0 TCK).
  3. CXF memiliki integrasi yang lebih baik dengan Spring dan kerangka kerja lainnya.
  4. CXF memiliki ekstensibilitas tinggi dalam hal strategi pencegat mereka.
  5. CXF memiliki fitur yang lebih dapat dikonfigurasi melalui API alih-alih file XML yang rumit.
  6. CXF memiliki Bindings : SOAP, REST / HTTP, dan Bindings Data mendukung JAXB 2.0, Aegis, secara default menggunakan JAXB 2.0 dan spesifikasi standar Java yang lebih dekat.
  7. CXF memiliki banyak toolkit, misal Java ke WSDL, WSDL ke Java, XSD ke WSDL, WSDL ke XML, WSDL ke SOAP, WSDL to Service.

Keuntungan dari Axis2:

  1. Axis2 juga mendukung WS-RM, WS-Security, dan WS-I BasicProfile kecuali untuk WS-Policy, saya berharap ini akan didukung dalam versi yang akan datang.
  2. Axis memiliki lebih banyak opsi untuk binding data untuk Anda pilih
  3. Axis2 mendukung berbagai bahasa — termasuk versi C / C ++ dan versi Java.
  4. Axis2 mendukung berbagai ikatan data yang lebih luas, termasuk XMLBeans, JiBX, JaxMe, dan JaxBRI serta pengikatan data asli sendiri, ADB. sejarah yang lebih panjang dari CXF.

Dalam Ringkasan: Dari item keunggulan di atas, membawa kita pada pemikiran yang baik untuk membandingkan Axis2 dan CXF berdasarkan kemampuannya sendiri. mereka semua memiliki area berbeda yang dikembangkan dengan baik dalam bidang tertentu, CXF sangat dapat dikonfigurasi, terintegrasi dan memiliki banyak tool kit yang didukung dan dekat dengan komunitas Java, Axis2 telah mengambil pendekatan yang membuatnya menyerupai server aplikasi dalam miniatur. itu di berbagai bahasa pemrograman. karena Kemandiriannya, Axis2 cocok untuk layanan web yang berdiri sendiri, independen dari aplikasi lain, dan menawarkan berbagai fungsionalitas.

Sebagai pengembang, kami harus menyesuaikan perspektif kami untuk memilih yang tepat, kerangka mana pun yang Anda pilih, Anda akan mendapat manfaat dari komunitas open source yang aktif dan stabil. Dalam hal kinerja, saya melakukan tes berdasarkan fungsionalitas yang sama dan dikonfigurasi dalam wadah web yang sama, hasilnya menunjukkan bahwa CXF tampil sedikit lebih baik daripada Axis2, satu kasus mungkin tidak mencerminkan kemampuan dan kinerja mereka.

Dalam beberapa artikel penelitian, terungkap bahwa penyatuan data ADB milik Axis2 sedikit lebih cepat daripada CXF karena tidak memiliki fitur tambahan (WS-Security). Apache AXIS2 adalah kerangka kerja yang paling banyak digunakan tetapi skor Apache CXF atas Kerangka Layanan Web lainnya secara komparatif mempertimbangkan kemudahan pengembangan, tren industri saat ini, kinerja, scorecard keseluruhan dan fitur-fitur lainnya (kecuali jika ada dukungan Layanan Web Orkestrasi secara eksplisit diperlukan, yang tidak diperlukan di sini )

ajithparamban
sumber
2

Sesuai pengalaman saya CXF baik dalam hal mengkonfigurasi ke lingkungan Spring. Kelas yang dihasilkan juga mudah dipahami. Dan karena lebih aktif, kami mendapatkan dukungan yang lebih baik dibandingkan dengan AXIS atau AXIS2.

Sudip7
sumber
1

Keuntungan lain dari CXF: terhubung ke server web menggunakan otentikasi NTLMV2 di luar kotak. (digunakan oleh Windows 2008 & ke atas) Sebelum menggunakan CXF, saya meretas Axis2 untuk menggunakan HTTPClient V4 + JCIFS untuk memungkinkan hal ini.

pengguna1717728
sumber