Попробуем сравнить 2
известных фреймворка для написания
веб-сервисов и клиентов к ним.
К этим фреймворкам
относятся: Spring Web Services, Apache CXF.
Проект Apache CXF активно
развивается, в то время как Spring WS
представляет собой законченное решение.
Архитектура Spring WS довольно простая, что
при желании позволит разобраться в её
исходном коде и поправить замеченные
ошибки.
Я знаком с обоими
фреймворками, но испробовал не все их
возможности. Сравнение представлено в
таблице ниже и представляет собой
попытку свести информацию в табличный
вид.
По итогам сравнения
можно сказать следующее:
- Apache CXF обладает большим количеством возможностей по сравнению с Spring WS.
- В проекте, когда интерфейс WSDL довольно часто меняется, то проще использовать Spring WS.
- Обе библиотеки довольно просты в освоении, однако с CXF много времени можно потратить на настройке.
- Следует отметить, что с обоими библиотеками поставляется набор примеров.
- Выбор в пользу той или иной библиотеки необходимо делать исходя из требований к проекту, а также исходя из приверженности работы по стандарту 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.
Простота
в использовании.
|
Крайне
разрозненная. Трудно понять с чего стоит начинать, и где найти нужную информацию.
|
Наличие
инструментов
|
Отсутствует.
|
|
Версионность
сервисов
|
Через
XSLT преобразование запроса. Возможность
быстрого внесения изменений в интерфейс
сервиса, что полезно при изменяющемся
контракте.
|
Написание
собственного перехватчика
(http://cxf.apache.org/docs/service-routing.html).
|
Клиенты
|
Простой
синхронный клиент, интеграция с http
client.
|
Возможность
создания клиента на javascript, асинхронного
клиента.
|
Отказоустойчивость
|
Необходимо
придумывать самому.
|
Возможность
создания клиентов, использующих
возможность работы с другим сервисом
в случае отказа сервера.
|
Управление
|
Отсутствует
|
Поддержка
JMX.
|
Тестирование
сервисов
|
Поддержка
для тестирования клиентов и сервисов.
|
Необходимо
писать самому. Можно использовать локальный или in-VM транспорт.
|
Интеграция
с IDE
|
Отсутствует.
|
Интеграция
с Eclipse.
|
Комментариев нет:
Отправить комментарий