воскресенье, 2 сентября 2012 г.

Сравнение Apache CXF и Spring WS

-->
Попробуем сравнить 2 известных фреймворка для написания веб-сервисов и клиентов к ним.
К этим фреймворкам относятся: Spring Web Services, Apache CXF.

Проект Apache CXF активно развивается, в то время как Spring WS представляет собой законченное решение. Архитектура Spring WS довольно простая, что при желании позволит разобраться в её исходном коде и поправить замеченные ошибки.
Я знаком с обоими фреймворками, но испробовал не все их возможности. Сравнение представлено в таблице ниже и представляет собой попытку свести информацию в табличный вид.
По итогам сравнения можно сказать следующее:
  1. Apache CXF обладает большим количеством возможностей по сравнению с Spring WS.
  2. В проекте, когда интерфейс WSDL довольно часто меняется, то проще использовать Spring WS.
  3. Обе библиотеки довольно просты в освоении, однако с CXF много времени можно потратить на настройке.
  4. Следует отметить, что с обоими библиотеками поставляется набор примеров.
  5. Выбор в пользу той или иной библиотеки необходимо делать исходя из требований к проекту, а также исходя из приверженности работы по стандарту JAX-WS.



Spring WS
Apache CXF
Поддержка разработки типов сервисов
сверху-вниз
сверху-вниз, снизу-вверх.
Обработка входящих сообщений
DOM, SAX, StAX, JDOMs, dom4j, XOM, JAXB, Castor, Apache XMLBeans, XStream. Определение обработчика входящего XML запроса на основе запроса, заголовка SOAP Action или Xpath выражения.
DOM, SAX, StAX, InputStream, JAXB 2.x, Aegis, Apache XMLBeans, Service Data Objects (SDO), JiBX.
Поддержка спецификаций
WS-Security, WS-Addressing.
Интеграция с Acegi Security.
JAX-WS, JAX-RS, WS-Basic Profile, WS-Addressing, WS-Policy, WS-Reliable Messaging, WS-Security, WS-SecurityPolicy, WS-SecureConversation, WS-Trust (partial support).
Поддержка транспорта
JMS, Email, XMPP, HTTP, Embedded HTTP.
HTTP, Servlet, JMS, In-VM and many others via the Camel transport for CXF such as SMTP/POP3, TCP and Jabber.
Документация
Неплохая, есть tutorial.
Простота в использовании.
Крайне разрозненная. Трудно понять с чего стоит начинать, и где найти нужную информацию.
Наличие инструментов
Отсутствует.
  • генераторы кода WSDL to Java, WSDL to JavaScript, Java to JavaScript,
  • генераторы WSDL Java to WSDL, XSD to WSDL, IDL to WSDL, WSDL to XML
  • проверка WSDL.
Версионность сервисов
Через XSLT преобразование запроса. Возможность быстрого внесения изменений в интерфейс сервиса, что полезно при изменяющемся контракте.
Написание собственного перехватчика (http://cxf.apache.org/docs/service-routing.html).
Клиенты
Простой синхронный клиент, интеграция с http client.
Возможность создания клиента на javascript, асинхронного клиента.
Отказоустойчивость
Необходимо придумывать самому.
Возможность создания клиентов, использующих возможность работы с другим сервисом в случае отказа сервера.
Управление
Отсутствует
Поддержка JMX.
Тестирование сервисов
Поддержка для тестирования клиентов и сервисов.
Необходимо писать самому. Можно использовать локальный или in-VM транспорт.
Интеграция с IDE
Отсутствует.
Интеграция с Eclipse.


Комментариев нет:

Отправить комментарий