Каковы преимущества использования Apache CXF по сравнению с Apache Axis и наоборот?
Имейте в виду, я полностью предвзят (председатель 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) одинаков для обоих, поэтому производительность полностью сопоставима.
Не уверен, что это отвечает на вопрос вообще. Надеюсь, что по крайней мере, предоставляет некоторую информацию.
:-)
Дэн
источник
Еще одна вещь - деятельность сообщества. Сравните трафик списков рассылки для axis и cxf (2013).
Так что, если это какой-то индикатор использования, то ось используется гораздо реже, чем cxf.
Сравните статистику CXF и Axis в ohloh . CXF обладает очень высокой активностью, в то время как Axis имеет низкую активность в целом.
Это график количества коммитов с течением времени для CXF (красный) и Axis1 (зеленый), Axis2 (синий).
источник
Преимущества CXF:
Преимущества Axis2:
Вкратце: Из вышеперечисленных преимуществ мы можем подумать, как сравнить Axis2 и CXF по достоинству. все они имеют различные хорошо развитые области в определенной области, CXF очень настраиваемый, интегрируемый и имеет богатые наборы инструментов, поддерживаемые и близкие к сообществу Java, Axis2 использует подход, который во многих отношениях напоминает сервер приложений в миниатюре. это на нескольких языках программирования. Благодаря своей независимости Axis2 подходит для автономных веб-сервисов, независимых от других приложений, и предлагает широкий спектр функциональных возможностей.
Как разработчик, мы должны согласиться с нашей точкой зрения, чтобы выбрать правильную, какую бы платформу вы ни выбрали, вы получите преимущество от активного и стабильного сообщества с открытым исходным кодом. С точки зрения производительности, я провел тест на основе той же функциональности и настроен в том же веб-контейнере, результат показывает, что CXF работает немного лучше, чем Axis2, в одном случае он может не совсем точно отражать их возможности и производительность.
В некоторых исследовательских статьях показано, что проприетарное связывание данных ADB в Axis2 немного быстрее, чем в CXF, поскольку оно не имеет дополнительной функции (WS-Security). Apache AXIS2 является относительно наиболее используемой платформой, но Apache CXF имеет преимущество перед другими Web Services Framework, сравнительно учитывая простоту разработки, текущие тенденции в отрасли, производительность, общую систему показателей и другие функции (если не существует явно необходимой поддержки оркестровки Web Services, которая здесь не требуется) )
источник
По моему опыту, CXF хорош в плане его настройки в среде Spring. Также сгенерированные классы просты для понимания. И поскольку он более активен, мы получаем лучшую поддержку по сравнению с AXIS или AXIS2.
источник
Еще одно преимущество CXF: он подключается к веб-серверам с использованием аутентификации NTLMV2 из коробки. (используется в Windows 2008 и выше) Перед использованием CXF я взломал Axis2, чтобы использовать HTTPClient V4 + JCIFS, чтобы сделать это возможным.
источник