Apache CXF ve Eksen arasındaki fark


177

Apache CXF'yi Apache Axis'e göre kullanmanın avantajları nelerdir?

Yanıtlar:


229

Unutmayın, tamamen önyargılıyım (PMC CXF Başkanı), ancak düşüncelerim:

Kesinlikle "proje yapmak için ihtiyacım olanı yapabilir mi" perspektifinden, her ikisi de oldukça eşdeğerdir. CXF'in Axis 2'nin yapamayacağı ve tersi yapabileceği bazı “kenar durumu” şeyleri var. Ancak kullanım durumlarının% 90'ı için her ikisi de iyi çalışacaktır.

Böylece, "onay kutusu özellikleri" dışında bir sürü başka şey gelir.

  • API - CXF "standartlara dayalı" API'leri (JAX-WS uyumlu) zorlarken, Axis2 general tescilli şeylere yönelir. Bununla birlikte, CXF bile JAX-WS spesifikasyonu dışındaki çeşitli şeyleri yapılandırmak / kontrol etmek için özel API'lerin kullanılmasını gerektirebilir. REST için, CXF tescilli şeyler yerine standart API'leri (JAX-RS uyumlu) kullanır. (Evet, Axis2'deki JAX-WS çalışma zamanının farkındayım, ancak araç ve dokümanlar ve her şey bunu hedeflemiyor)

  • Topluluk yönleri ve desteklenebilirlik - CXF, sorunlara yanıt vermekten ve "düzeltme paketlerini" kullanıcılar için kullanılabilir hale getirmekten gurur duyar. CXF 2.0.x için 12 düzeltme paketi (iki yıl önce yayınlandı, bu yüzden yaklaşık 2 ayda bir), 6 düzeltme paketi 2.1.x'e ve şimdi 2.2.x için 3 yaptı. Axis2 eski sürümleri gerçekten "desteklemez". "Kritik" bir sorun gerçekleşmedikçe, düzeltmeleri almak için bir sonraki büyük sürüme kadar beklemeniz gerekebilir (yaklaşık 9-10 ayda bir ortalama). (her ikisiyle de, kaynak kodunu alabilir ve kendiniz yama / düzeltme yapabilirsiniz. Açık kaynağı sevmelisiniz.)

  • Entegrasyon - Spring kullanıyorsanız CXF çok daha iyi Spring entegrasyonuna sahiptir. Tüm konfigürasyon ve benzeri Bahar ile yapılır. Ayrıca, insanlar CXF'yi diğer uygulamalara daha "katıştırılabilir" (bu açıdan Axis2'ye hiç bakmadım) olarak görme eğilimindedir. Bunun gibi şeylerin sizin için önemli olup olmadığından emin değilim.

  • Performans - ikisi de çok iyi performans gösteriyor. Axis2'nin tescilli ADB veritabanının CXF'den biraz daha hızlı olduğunu düşünüyorum, ancak JAXB (yine standartlara dayalı API'ler) kullanıyorsanız, CXF biraz daha hızlıdır. WS-Security gibi daha karmaşık senaryolar kullanırken, temel güvenlik "motoru" (WSS4J) her ikisi için de aynıdır, bu nedenle performans tamamen karşılaştırılabilir.

Bunun soruyu cevaplayıp yanıtlamadığından emin değilim. Umarım en azından bazı bilgiler sağlar.

:-)

Dan


10
Aa WS-Security bakış açısından yeni bir karşılaştırma: ibm.com/developerworks/java/library/j-jws19/index.html
Daniel Kulp

Bir intranette CXF kullanırken HTTP iletişimini hızlandırmanın bir göstergesi var mı?
Lan

57
  • Axis2 : Piyasada daha çok yer kaplar, daha fazla bağlamayı destekler, C / C ++ gibi diğer dilleri destekler.
  • CXF : Kullanımı çok daha kolay, daha fazla Bahar dostu, bazı WS- * uzantıları için daha hızlı destek aldı.

atıf yapılan karşılaştırma artık mevcut değil: "Yüklenen İçerik Kaldırıldı"
maiklos

5
+1 kullanımı çok daha kolay. IMO, CXF, WSDL'den bir WS / WS-istemcisi için temel sınıflar oluştururken daha az ayrıntılıdır. Bir Axis istemcisi, CXF'in aksine, anlaşılması ve kırılması zor bir şekilde zor bir kod gerektirir.
Priidu Neemre

42

Bir şey daha, topluluğun etkinliği. Eksen ve cxf (2013) için posta listesi trafiğini karşılaştırın.

Yani bu herhangi bir kullanım göstergesi ise, eksen cxf'den çok daha az kullanılır.

Ohloh CXF ve Eksen istatistiklerini karşılaştırın . Eksen genel olarak düşük aktiviteye sahipken CXF çok yüksek aktiviteye sahiptir.

Bu, CXF (kırmızı) ve Eksen1 (yeşil) Eksen2 (mavi) için zaman içindeki taahhütlerin grafiğidir. resim açıklamasını buraya girin


24

CXF'nin avantajları:

  1. CXF, WS-Addressing, WS-Policy, WS-RM, WS-Security ve WS-I BasicProfile için destekler.
  2. CXF, JAX-WS API'sini uygular (JAX-WS 2.0 TCK'ya göre).
  3. CXF, Bahar ve diğer çerçevelerle daha iyi entegrasyona sahiptir.
  4. CXF, önleme stratejileri açısından yüksek genişletilebilirliğe sahiptir.
  5. CXF, hantal XML dosyaları yerine API aracılığıyla daha fazla yapılandırılabilir özelliğe sahiptir.
  6. CXF'nin Ciltleri : SOAP, REST / HTTP vardır ve Veri Bağlamaları JAXB 2.0, Aegis'i destekler, varsayılan olarak JAXB 2.0 ve daha fazla Java standart belirtimini kullanır.
  7. CXF, Java'dan WSDL'ye, WSDL'den Java'ya, XSD'den WSDL'ye, WSDL'den XML'ye, WSDL'den SOAP'a, WSDL'den Hizmet'e kadar birçok araç setine sahiptir.

Axis2'nin avantajları:

  1. Axis2, WS-RM, WS-Security ve WS-I BasicProfile'ı da destekler, WS-Policy hariç, gelecek bir sürümde destekleneceğini umuyorum.
  2. Eksen, seçtiğiniz veri bağları için daha fazla seçeneğe sahiptir
  3. Axis2, C / C ++ sürümü ve Java sürümü dahil olmak üzere birden çok dili destekler.
  4. Axis2, XMLBeans, JiBX, JaxMe ve JaxBRI dahil olmak üzere daha geniş bir veri bağlama aralığının yanı sıra kendi yerel veri bağlama ADB'sini de destekler. CXF'den daha uzun bir geçmiş.

Özetle: Yukarıdaki avantaj maddelerinden, Axis2 ve CXF'yi kendi değerleriyle karşılaştırmak bizi iyi düşüncelere getiriyor. hepsinin belirli bir alanda farklı gelişmiş alanları vardır, CXF çok yapılandırılabilir, entegre edilebilir ve Java topluluğuna yakın ve desteklenen zengin araç kitlerine sahiptir, Axis2 birçok yönden minyatür bir uygulama sunucusuna benzeyen bir yaklaşım benimsemiştir. çoklu programlama dillerinde bulunur. Bağımsızlığı nedeniyle Axis2, diğer uygulamalardan bağımsız olarak tek başına duran web servislerine borçludur ve çok çeşitli işlevler sunar.

Bir geliştirici olarak, doğru olanı seçmek için perspektifimize uymalıyız, hangi çerçeveyi seçerseniz seçin, aktif ve istikrarlı bir açık kaynak topluluğunun avantajına sahip olacaksınız. Performans açısından, aynı işlevselliği temel alan ve aynı web kapsayıcısında yapılandırılan bir test yaptım, sonuç CXF'nin Axis2'den biraz daha iyi performans gösterdiğini gösteriyor, tek durum yeteneklerini ve performansını tam olarak yansıtmayabilir.

Bazı araştırma makalelerinde, Axis2'nin tescilli ADB veri tabanının CXF'den biraz daha hızlı olduğunu, çünkü ek bir özelliği (WS-Güvenlik) olmadığını ortaya koymaktadır. Apache AXIS2 nispeten en çok kullanılan çerçevedir ancak Apache CXF, geliştirme kolaylığı, mevcut endüstri eğilimi, performans, genel puan kartı ve diğer özellikleri (nispeten gerekli olmayan Web Hizmetleri Orkestrasyon desteği olmadığı sürece) karşılaştırmalı olarak diğer Web Hizmetleri Çerçevesi üzerinden karşılaştırır. )


2

Deneyimlerime göre CXF, onu Bahar ortamına yapılandırma açısından iyidir. Ayrıca oluşturulan sınıfların anlaşılması kolaydır. Daha aktif olduğu için AXIS veya AXIS2 ile karşılaştırıldığında daha iyi destek alıyoruz.


1

CXF'nin bir başka avantajı: NTLMV2 kimlik doğrulaması kullanılarak kutunun dışında web sunucularına bağlanır. (Windows 2008 ve üstü tarafından kullanılır) CXF kullanmadan önce, bunu mümkün kılmak için HTTPClient V4 + JCIFS kullanmak için Axis2'yi hackledim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.