Разница между Apache CXF и Axis

177

Каковы преимущества использования Apache CXF по сравнению с Apache Axis и наоборот?

Прабху Р
источник

Ответы:

229

Имейте в виду, я полностью предвзят (председатель PMC CXF), но мои мысли:

С точки зрения «может ли проект делать то, что мне нужно», оба довольно эквивалентны. Есть некоторые «крайние случаи», которые CXF может сделать, а Axis 2 - нет, и наоборот. Но для 90% случаев использования будет работать нормально.

Таким образом, это сводится к куче других вещей, кроме «функций флажка».

  • API - CXF выдвигает API, основанные на стандартах (совместимые с JAX-WS), в то время как Axis2 general идет на проприетарные вещи. Тем не менее, даже 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. Все настройки и все такое делается через Spring. Кроме того, люди склонны считать CXF более «встраиваемым» (я никогда не смотрел на Axis2 с этой точки зрения) в другие приложения. Не уверен, что такие вещи важны для тебя.

  • Производительность - они оба работают очень хорошо. Я думаю, что проприетарная привязка данных ADB в Axis2 немного быстрее, чем в CXF, но если вы используете JAXB (снова API, основанные на стандартах), CXF будет немного быстрее. При использовании более сложных сценариев, таких как WS-Security, базовый «механизм» безопасности (WSS4J) одинаков для обоих, поэтому производительность полностью сопоставима.

Не уверен, что это отвечает на вопрос вообще. Надеюсь, что по крайней мере, предоставляет некоторую информацию.

:-)

Дэн

Дэниел Кулп
источник
10
Недавнее сравнение с точки зрения WS-Security: ibm.com/developerworks/java/library/j-jws19/index.html
Даниэль Кульп,
Есть ли какие-нибудь указатели для ускорения HTTP-обмена при использовании CXF в интрасети? Подключение к 8 веб-сервисам через локальную сеть
tgkprog
57
  • Axis2 : более распространенный на рынке, поддерживает больше привязок, поддерживает другие языки, такие как C / C ++.
  • CXF : намного проще в использовании, более дружественный к Spring, быстрее получил поддержку некоторых расширений WS- *.
vsg
источник
упомянутое сравнение больше не доступно: «Удаленный
загруженный
5
+1 гораздо проще в использовании. IMO, CXF также менее многословен при генерации базовых классов для WS / WS-клиента из WSDL. Клиенту Axis требуется большая часть кода, который, к сожалению, трудно понять и преломить, в отличие от CXF.
Прииду Нимре
42

Еще одна вещь - деятельность сообщества. Сравните трафик списков рассылки для axis и cxf (2013).

Так что, если это какой-то индикатор использования, то ось используется гораздо реже, чем cxf.

Сравните статистику CXF и Axis в ohloh . CXF обладает очень высокой активностью, в то время как Axis имеет низкую активность в целом.

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

Кристиан Шнайдер
источник
24

Преимущества CXF:

  1. CXF поддерживает WS-адресацию, WS-Policy, WS-RM, WS-Security и WS-I BasicProfile.
  2. CXF реализует JAX-WS API (в соответствии с 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, в одном случае он может не совсем точно отражать их возможности и производительность.

В некоторых исследовательских статьях показано, что проприетарное связывание данных ADB в Axis2 немного быстрее, чем в CXF, поскольку оно не имеет дополнительной функции (WS-Security). Apache AXIS2 является относительно наиболее используемой платформой, но Apache CXF имеет преимущество перед другими Web Services Framework, сравнительно учитывая простоту разработки, текущие тенденции в отрасли, производительность, общую систему показателей и другие функции (если не существует явно необходимой поддержки оркестровки Web Services, которая здесь не требуется) )

ajithparamban
источник
2

По моему опыту, CXF хорош в плане его настройки в среде Spring. Также сгенерированные классы просты для понимания. И поскольку он более активен, мы получаем лучшую поддержку по сравнению с AXIS или AXIS2.

Sudip7
источник
1

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

user1717728
источник