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


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

6 165

6 ответов:

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

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

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

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

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

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

: -)

Дэн

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

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

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

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

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

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

  1. CXF поддерживает для адресации WS, WS-политика, Вт-РМ и WS-Security и WS-я 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, чтобы мыло, WSDL для сервиса.

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

  1. Axis2 также поддерживает WS-RM, WS-Security и WS-I BasicProfile за исключением WS-Policy, я ожидаю этого будет поддерживаться в следующей версии.
  2. ось имеет больше возможностей для привязки данных выберите
  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 оценивает по сравнению с другими фреймворками веб-служб сравнительно с учетом простоты разработки, текущих тенденций в отрасли, производительности, общей системы показателей и других функций (если нет поддержки оркестровки веб-служб явно не требуется, что не является требуется здесь)

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

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