Разница между Apache CXF и осью

В чем преимущества использования Apache CXF над Apache Axis и наоборот?

Ответ 1

Имейте в виду, я полностью предвзятый (председатель 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 гордится тем, что отвечает на вопросы и делает "fixpacks" доступными для пользователей. CXF сделал 12 исправлений для 2.0.x(выпущен два года назад, примерно каждые 2 месяца), 6 исправлений до 2.1.x, а теперь 3 для 2.2.x. Axis2 на самом деле не поддерживает старые версии. Если "критическая" проблема не ударит, вам может потребоваться до следующего большого релиза (они примерно каждые 9-10 месяцев или около того), чтобы получить исправления. (хотя, с помощью либо, вы можете захватить исходный код и патч/исправить себя. Gotta love open source.)

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

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

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

: -)

Dan

Ответ 2

  • Axis2. Более вездесущий на рынке, поддерживает больше привязок, поддерживает другие языки, такие как C/С++.
  • CXF: гораздо проще в использовании, более Spring дружелюбный, быстрее получил поддержку некоторых расширений WS- *.

Ответ 3

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

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

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

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

Ответ 4

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

  • CXF поддерживает WS-Addressing, WS-Policy, WS-RM, WS-Security и WS-I BasicProfile.
  • CXF реализует API JAX-WS (согласно JAX-WS 2.0 TCK).
  • CXF имеет лучшую интеграцию с Spring и другими платформами.
  • CXF обладает высокой расширяемостью с точки зрения стратегии перехватчика.
  • CXF имеет более настраиваемую функцию через API, а не громоздкие XML файлы.
  • CXF имеет привязки: SOAP, REST/HTTP и привязки данных поддерживает JAXB 2.0, Aegis, по умолчанию использует JAXB 2.0 и более близкую стандартную спецификацию Java.
  • CXF содержит множество наборов инструментов, например. Java для WSDL, WSDL для Java, XSD для WSDL, WSDL для XML, WSDL для SOAP, WSDL для обслуживания.

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

  • Axis2 также поддерживает WS-RM, WS-Security и WS-I BasicProfile, за исключением WS-Policy, я ожидаю, что он будет поддерживаться в следующей версии.
  • У оси есть больше вариантов привязки данных для вашего выбора.
  • Axis2 поддерживает несколько языков, включая версию C/С++ и версию Java.
  • 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, которая здесь не требуется )

Ответ 5

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

Ответ 6

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