Jakie są zalety korzystania z Apache CXF nad Apache Axis i odwrotnie?
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
źródło
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).
źródło
Zalety CXF:
Zalety Axis2:
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 )
źródło
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.
źródło
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.
źródło