Різниця між Apache CXF і Axis


Відповіді:


229

Майте на увазі, я повністю упереджений (голова PMC CXF), але мої думки:

З точки зору суто "чи може проект робити те, що мені потрібно для цього", обидва цілком рівноцінні. Є деякі "кращі справи", які CXF може зробити, що Axis 2 не може, і навпаки. Але для 90% випадків використання будь-який буде працювати нормально.

Таким чином, вона зводиться до ще багатьох речей, окрім "функцій прапорця".

  • API - CXF підштовхує API, засновані на стандартах (сумісні з JAX-WS), тоді як Axis2 взагалі йде на власні речі. Однак, навіть для CXF може знадобитися використання фірмових API для налаштування / контролю різних речей поза специфіками JAX-WS. Для REST CXF також використовує стандартні API (сумісні з JAX-RS) замість власних речей. (Так, я знаю про час виконання JAX-WS в Axis2, але інструментарій та документи та все, що не націлено на нього)

  • Аспекти спільноти та підтримка - CXF пишається тим, що реагує на проблеми та робить «виправлення» доступними для користувачів. CXF зробив 12 виправлень для 2.0.x (вийшов два роки тому, тобто приблизно кожні 2 місяці), 6 виправлень на 2.1.x, а тепер 3 для 2.2.x. Axis2 насправді не "підтримує" старіші версії. Якщо не вирішено "критичне" питання, вам, можливо, доведеться почекати до наступного великого випуску (вони становлять приблизно кожні 9-10 місяців або близько того), щоб отримати виправлення. (хоча за допомогою будь-якого ви можете схопити вихідний код і виправити / виправити себе. Треба любити відкритий код.)

  • Інтеграція - CXF має набагато кращу весняну інтеграцію, якщо використовувати Spring. Вся конфігурація і таке робиться через Spring. Крім того, люди схильні вважати CXF більш "вбудованим" (я ніколи не дивився на Axis2 з цієї точки зору) в інші програми. Не впевнений, чи стосуються вас подібні речі.

  • Продуктивність - вони обидва дуже добре. Я думаю, що власність прив'язки даних ADB Axis2 трохи швидша, ніж CXF, але якщо ви використовуєте JAXB (знову ж таки на основі стандартів API), CXF трохи швидше. При використанні більш складних сценаріїв, таких як WS-Security, базовий "двигун" безпеки (WSS4J) однаковий для обох, тому продуктивність повністю порівнянна.

Не впевнений, чи це взагалі відповідає на питання. Сподіваюся, що принаймні надає деяку інформацію.

:-)

Ден


10
Недавнє порівняння з точки зору WS-Security: ibm.com/developerworks/java/library/j-jws19/index.html
Daniel Kulp

Будь-які вказівки на те, щоб зробити HTTP-зв’язок швидшим при використанні CXF у межах внутрішньої мережі? Підключіться до 8 веб-сервісів через lan
tgkprog

57
  • Axis2 : Більш всюдисущий на ринку, підтримує більше прив’язок, підтримує інші мови, такі як C / C ++.
  • CXF : набагато простіший у використанні, більш сприятливий для весни, швидше отримує підтримку деяких розширень WS- *.

згадане порівняння вже недоступне: "Завантажений вміст видалено"
maiklos

5
+1 для набагато простішого використання. IMO, CXF також є менш дослідним при генерації базових класів для WS / WS-клієнта з WSDL. Клієнт Axis вимагає завантаження коду, який дратує важко зрозуміти і рефрактор, на відміну від CXF.
Priidu Neemre

42

Ще одне - це діяльність громади. Порівняйте трафік списку розсилки для осі та cxf (2013).

Отже, якщо це будь-який показник використання, то ось набагато менше використовується, ніж cxf.

Порівняйте статистику CXF та Axis на ohloh . CXF має дуже високу активність, тоді як Axis має низьку активність в цілому.

Це графік кількості комісій за час для CXF (червоний) та Axis1 (зелений) Axis2 (синій). введіть тут опис зображення


24

Переваги CXF:

  1. CXF підтримує WS-адресацію, WS-політику, WS-RM, WS-безпеку та WS-I BasicProfile.
  2. CXF реалізує API JAX-WS (згідно JAX-WS 2.0 TCK).
  3. CXF має кращу інтеграцію з Spring та іншими рамками.
  4. CXF має високу розширюваність з точки зору стратегії їх перехоплення.
  5. CXF має більш налаштовану функцію через API замість громіздких XML-файлів.
  6. CXF має прив'язки: SOAP, REST / HTTP, а його Прив'язки даних підтримують JAXB 2.0, Aegis, за замовчуванням він використовує JAXB 2.0 та більш близьку стандартну специфікацію Java.
  7. CXF має безліч наборів інструментів, наприклад, Java для WSDL, WSDL для Java, XSD для WSDL, WSDL для XML, WSDL для SOAP, WSDL для обслуговування.

Переваги Axis2:

  1. Axis2 також підтримує WS-RM, WS-Security та WS-I BasicProfile, за винятком WS-Policy, сподіваюся, що він буде підтримуватися в наступній версії.
  2. Axis має більше варіантів прив’язки даних на ваш вибір
  3. Axis2 підтримує кілька мов, включаючи версію C / C ++ та версію Java.
  4. Axis2 підтримує більш широкий спектр прив'язки даних, включаючи XMLBeans, JiBX, JaxMe та JaxBRI, а також власне прив'язування даних, ADB. довша історія, ніж у CXF.

Підсумок: З наведених вище переваг, це спонукає нас до хороших думок порівняти Axis2 та CXF за власними достоїнствами. всі вони мають різні добре розвинені області в певній галузі, CXF дуже настроюється, інтегрується та має багаті набори інструментів, що підтримуються та близькі до спільноти Java, Axis2 прийняв підхід, завдяки якому він багато в чому нагадує сервер додатків у мініатюрі. це на кількох мовах програмування. через свою незалежність Axis2 піддається веб-сервісам, які стоять окремо, незалежно від інших програм і пропонують широкий спектр функціональних можливостей.

Як розробник, ми повинні узгодити нашу перспективу, щоб вибрати правильну, яку б рамку ви не вибрали, ви матимете перевагу від активного та стабільного спільноти з відкритим кодом. Щодо продуктивності, я зробив тест на основі однакової функціональності та налаштований у одному веб-контейнері, результат показує, що CXF працює трохи краще, ніж Axis2, одиничний випадок може не точно відображати їх можливості та продуктивність.

У деяких дослідницьких статтях виявлено, що власницька прив'язка даних АБС Axis2 трохи швидша, ніж CXF, оскільки вона не має додаткової функції (WS-Security). Apache AXIS2 є відносно найбільш використовуваною основою, але Apache CXF забиває порівняно з іншими Web Services Framework порівняно з урахуванням простоти розвитку, поточної тенденції галузі, продуктивності, загальної карти показників та інших функцій (якщо не існує явної необхідності підтримки оркестрації веб-служб, чого тут не потрібно. )


2

На мій досвід, CXF хороший з точки зору його конфігурації у середовищі Spring. Також створені класи прості для розуміння. Оскільки вона активніша, ми отримуємо кращу підтримку порівняно з AXIS або AXIS2.


1

Ще одна перевага CXF: він підключається до веб-серверів, використовуючи аутентифікацію NTLMV2 поза коробкою. (Використовується Windows 2008 і новіші версії) Перш ніж використовувати CXF, я зламав Axis2, щоб використовувати HTTPClient V4 + JCIFS, щоб зробити це можливим.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.