Różnica między Apache CXF i Axis

177

Jakie są zalety korzystania z Apache CXF nad Apache Axis i odwrotnie?

Prabhu R
źródło

Odpowiedzi:

229

Pamiętaj, że jestem całkowicie stronniczy (prezes PMC CXF), ale moje przemyślenia:

Z perspektywy „czy projekt może zrobić to, czego potrzebuję”, oba są dość równoważne. Istnieją pewne „skrajne przypadki” rzeczy, których CXF może zrobić, czego Axis 2 nie może i odwrotnie. Ale w 90% przypadków użycia oba będą działać dobrze.

W związku z tym sprowadza się do kilku innych rzeczy niż „funkcje pól wyboru”.

  • API - CXF wypycha API "oparte na standardach" (zgodne z JAX-WS), podczas gdy Axis2 general idzie w kierunku prawnie zastrzeżonych rzeczy. To powiedziawszy, nawet CXF może wymagać użycia zastrzeżonych API do konfigurowania / kontrolowania różnych rzeczy poza specyfikacją JAX-WS. W przypadku REST CXF używa również standardowych interfejsów API (zgodnych z JAX-RS) zamiast zastrzeżonych rzeczy. (Tak, znam środowisko uruchomieniowe JAX-WS w Axis2, ale narzędzia i dokumentacja oraz wszystko to nie jest na to ukierunkowane)

  • Aspekty społecznościowe i możliwość obsługi - CXF szczyci się możliwością reagowania na problemy i udostępniania użytkownikom „pakietów poprawek”. CXF wykonał 12 pakietów poprawek dla wersji 2.0.x (wydanych dwa lata temu, czyli mniej więcej co 2 miesiące), 6 pakietów poprawek do wersji 2.1.x, a teraz 3 dla wersji 2.2.x. Axis2 tak naprawdę nie "obsługuje" starszych wersji. O ile nie pojawi się „krytyczny” problem, być może trzeba będzie poczekać do następnej dużej wersji (średnio co około 9–10 miesięcy), aby uzyskać poprawki. (chociaż w obu przypadkach możesz pobrać kod źródłowy i załatać / naprawić siebie. Pokochaj open source).

  • Integracja - CXF ma znacznie lepszą integrację Spring, jeśli używasz Spring. Cała konfiguracja i takie są wykonywane przez Spring. Ponadto ludzie uważają CXF za bardziej „osadzalny” (nigdy nie patrzyłem na Axis2 z tej perspektywy) w innych aplikacjach. Nie jestem pewien, czy takie rzeczy mają dla Ciebie znaczenie.

  • Wydajność - obaj spisują się bardzo dobrze. Myślę, że opatentowane przez Axis2 wiązanie danych ADB jest nieco szybsze niż CXF, ale jeśli używasz JAXB (ponownie API oparte na standardach), CXF jest nieco szybszy. Podczas korzystania z bardziej złożonych scenariuszy, takich jak WS-Security, podstawowy „silnik” zabezpieczeń (WSS4J) jest taki sam dla obu, więc wydajność jest całkowicie porównywalna.

Nie jestem pewien, czy to w ogóle odpowiada na pytanie. Mam nadzieję, że przynajmniej zawiera pewne informacje.

:-)

Dan

Daniel Kulp
źródło
10
Ostatnie porównanie z punktu widzenia aa WS-Security: ibm.com/developerworks/java/library/j-jws19/index.html
Daniel Kulp
Czy są jakieś wskazówki, jak przyspieszyć komunikację HTTP w przypadku korzystania z CXF w intranecie? Połącz się z 8
usługami sieciowymi przez sieć
57
  • Oś 2 : bardziej wszechobecny na rynku, obsługuje więcej powiązań, obsługuje inne języki, takie jak C / C ++.
  • CXF : Znacznie łatwiejszy w użyciu, bardziej przyjazny dla sprężyn, szybszy z obsługą niektórych rozszerzeń WS- *.
vsg
źródło
odniesione porównanie nie jest już dostępne: „Przesłana zawartość została usunięta”
maiklos,
5
+1 za znacznie łatwiejszy w użyciu. IMO, CXF jest również mniej rozwlekły podczas generowania podstawowych klas dla klienta WS / WS z WSDL. W przeciwieństwie do CXF klient Axis wymaga irytująco trudnego do zrozumienia kodu, który jest irytująco trudny do zrozumienia.
Priidu Neemre
42

Jeszcze jedno to działalność społeczności. Porównaj ruch na listach mailingowych dla osi i cxf (2013).

Więc jeśli jest to jakikolwiek wskaźnik użycia, to oś jest znacznie mniej używana niż cxf.

Porównaj statystyki CXF i Axis w firmie ohloh . CXF ma bardzo wysoką aktywność, podczas gdy Axis ma ogólnie niską aktywność.

To jest wykres liczby zatwierdzeń w czasie dla CXF (czerwony) i Axis1 (zielony) Axis2 (niebieski). wprowadź opis obrazu tutaj

Christian Schneider
źródło
24

Zalety CXF:

  1. CXF obsługuje WS-Addressing, WS-Policy, WS-RM, WS-Security i WS-I BasicProfile.
  2. CXF implementuje JAX-WS API (zgodnie z JAX-WS 2.0 TCK).
  3. CXF ma lepszą integrację ze Spring i innymi frameworkami.
  4. CXF charakteryzuje się dużą rozszerzalnością pod względem strategii przechwytywania.
  5. CXF ma bardziej konfigurowalne funkcje za pośrednictwem interfejsu API zamiast uciążliwych plików XML.
  6. CXF ma Bindings : SOAP, REST / HTTP, a jego Data Bindings obsługuje JAXB 2.0, Aegis, domyślnie używa JAXB 2.0 i bardziej zbliżonej specyfikacji Java.
  7. CXF posiada bogate zestawy narzędzi, np. Java do WSDL, WSDL do Java, XSD do WSDL, WSDL do XML, WSDL do SOAP, WSDL do Service.

Zalety Axis2:

  1. Axis2 obsługuje również WS-RM, WS-Security i WS-I BasicProfile z wyjątkiem WS-Policy, spodziewam się, że będzie obsługiwany w nadchodzącej wersji.
  2. Axis ma więcej opcji powiązań danych do wyboru
  3. Axis2 obsługuje wiele języków - w tym wersję C / C ++ i wersję Java.
  4. Axis2 obsługuje szerszy zakres powiązań danych, w tym XMLBeans, JiBX, JaxMe i JaxBRI, a także własne natywne powiązanie danych ADB. dłuższa historia niż CXF.

W podsumowaniu: Z powyższych elementów przewagi, dobrze jest porównać Axis2 i CXF na podstawie ich własnych zalet. wszystkie mają różne dobrze rozwinięte obszary w określonej dziedzinie, CXF jest bardzo konfigurowalny, integruje się i ma bogate zestawy narzędzi obsługiwane i bliskie społeczności Java, Axis2 przyjął podejście, które sprawia, że ​​pod wieloma względami przypomina serwer aplikacji w miniaturze. jest w wielu językach programowania. Ze względu na swoją niezależność Axis2 nadaje się do usług internetowych, które są niezależne od innych aplikacji i oferują szeroką gamę funkcji.

Jako programista musimy przyjąć naszą perspektywę, aby wybrać właściwy, niezależnie od tego, którą platformę wybierzesz, będziesz czerpać korzyści z aktywnej i stabilnej społeczności open source. Jeśli chodzi o wydajność, przeprowadziłem test oparty na tej samej funkcjonalności i skonfigurowany w tym samym kontenerze internetowym, wynik pokazuje, że CXF działał trochę lepiej niż Axis2, pojedynczy przypadek może nie odzwierciedlać dokładnie ich możliwości i wydajności.

W niektórych artykułach badawczych ujawnia się, że zastrzeżone przez Axis2 wiązanie danych ADB jest nieco szybsze niż CXF, ponieważ nie ma dodatkowej funkcji (WS-Security). Apache AXIS2 jest stosunkowo najczęściej używanym frameworkiem, ale Apache CXF wypada w porównaniu z innymi platformami usług internetowych, biorąc pod uwagę łatwość rozwoju, aktualny trend w branży, wydajność, ogólną kartę wyników i inne funkcje (chyba że wyraźnie potrzebna jest obsługa orkiestracji usług sieci Web, co nie jest tutaj wymagane )

ajithparamban
źródło
2

Z mojego doświadczenia wynika, że ​​CXF jest dobry pod względem konfigurowania go w środowisku Spring. Również wygenerowane klasy są łatwe do zrozumienia. A ponieważ jest bardziej aktywny, otrzymujemy lepsze wsparcie w porównaniu do AXIS czy AXIS2.

Sudip7
źródło
1

Kolejna zaleta CXF: po wyjęciu z pudełka łączy się z serwerami internetowymi przy użyciu uwierzytelniania NTLMV2. (używane przez Windows 2008 i nowsze) Przed użyciem CXF zhakowałem Axis2, aby użyć HTTPClient V4 + JCIFS, aby było to możliwe.

user1717728
źródło