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

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

172 голосов
/ 07 августа 2009

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

Ответы [ 6 ]

222 голосов
/ 07 августа 2009

Имейте в виду, я полностью предвзят (председатель 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 с этой точки зрения) в другие приложения. Не уверен, что такие вещи важны для тебя.

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

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

: -)

Dan

53 голосов
/ 25 февраля 2010
  • Axis2 : более вездесущий на рынке, поддерживает больше привязок, поддерживает другие языки, такие как C / C ++.
  • CXF : гораздо проще в использовании, более дружественным к Spring, более быстрой поддержке некоторых расширений WS- *.
41 голосов
/ 19 апреля 2013

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

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

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

Это график для количества коммитов с течением времени для CXF (красный) и Axis1 (зеленый), Axis2 (синий). enter image description here

23 голосов
/ 31 января 2014

Преимущества 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, которая здесь не требуется )

2 голосов
/ 20 декабря 2013

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

1 голос
/ 26 сентября 2014

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

...