Какая структура лучше CXF или Spring -WS?
Я занимаюсь исследованием/сравнением CXF и Spring -WS для веб-сервисов? Мне нужно работать как провайдер, так и потребитель WS. В двух словах мне сказали, что Spring -WS более настраивается, но CXF легче вставать и работать. Этот вопрос субъективен, но поможет мне в моих исследованиях.
- Какой у вас опыт с любой из этих фреймворков?
- Вы столкнулись с любыми подводными камнями с любой картой?
- Вы нашли какие-либо полезные функции, предоставленные либо, которые, возможно, не предоставлены другим?
Ответы
Ответ 1
Я думаю, что самая большая разница - Spring -WS только "контракт-первый", в то время как я считаю, что CXF обычно "контракт-последний".
http://static.springsource.org/spring-ws/sites/1.5/reference/html/why-contract-first.html
Контракт-последний начинается с Java-кода, поэтому с ним обычно проще начать работу.
Однако создаваемый WSDL имеет тенденцию быть более хрупким.
Ответ 2
Об Apache CXF:
- CXF поддерживает несколько стандартов, включая SOAP, базовый профиль WSI, WSDL, WS-Addressing, WS-Policy, WS-ReliableMessaging, WS-Security, WS-SecurityPolicy и WS-SecureConversation.
- Apache CXF предлагает как контракт-последний (начиная с Java), так и подход Contract-first (начиная с WSDL).
- Apache CXF реализует JAX-WS и JAX-RS.
О Spring WS:
- Spring WS предлагает "только" контракт - сначала, начиная с схемы XSD.
- Spring WS поддерживает SOAP, WS-Security, WS-Addressing.
Итак, в конце я вижу Spring WS как минимальную структуру веб-сервисов, но считаю, что у него нет (на мой взгляд) каких-либо преимуществ перед Apache CXF (который интегрируется чрезвычайно хорошо с Spring). Между обоими, я бы взял Apache CXF.
Ответ 3
CXF никоим образом не препятствует вам начать работу с контрактом (WSDL). Я использовал оба этих продукта для создания веб-службы.
В CXF я использовал Maven и плагин Maven, назвав цель wsimport для создания SEI (интерфейса), который я тогда реализовал. После реализации интерфейса, который содержит фактическую логику обслуживания и конфигурацию моей реализации bean beans.xml, я затем разрешаю Maven упаковать ее в военный файл для развертывания. Все упражнение не могло быть проще.
Я не думаю, что Spring -WS предлагает любые преимущества, которые перевешивают отсутствие JAX-WS. CXF уже позволяет использовать Spring для подключения вашего beans, а также имеет полную реализацию JAX-WS.
Ответ 4
У нас есть опыт работы с CXF, и это предшественник XFire, и я могу рекомендовать его как надежный, быстрый (создание и выполнение WS) и надежную инфраструктуру.
Что касается проблем, которые вы можете встретить с CXF, см. мой пост https://stackoverflow.com/questions/289977/recommended-framework-for-java-web-services#290205
И я согласен с toolkit, что самая большая разница между структурами идеологически: каков первый код (например, интерфейс) или контракт (т.е. Wsdl). Подробнее см. Здесь:
Ответ 5
Apache CXF:
Ключевые положительные моменты:
❶ Наиболее широко используемые веб-сервисы Standard Now; Улучшение AXIS2, которое теперь постепенно заменяется Apache CXF
❷ Интуитивно понятный и простой в использовании (требуется меньше кодирования по сравнению с AXIS2)
❸ Чистое разделение фронтов, таких как JAX-WS, от основного кода
❹ Полностью совместим с JAX-WS, JAX-RS и другими
❺ Наилучшая производительность во всех доступных рамках с минимальными издержками вычислений
❻ Поддерживает большое количество интерфейсных моделей
❼ Поддерживает как JAX-WS, так и JAX-RS (для Restful Services)
❽ Поддерживает JBI и SDO (не поддерживается в AXIS2)
❾ Совместимость с Spring Framework
Основные проблемы:
❶ Пока не поддерживает транзакции оркестровки и WS
❷ Пока не поддерживает WSDL 2.0
Spring WS:
Ключевые положительные моменты:
❶ Лучшее с точки зрения поддержки подхода к разработке основанных на контракте первых веб-сервисов
❷ Обеспечивает стандарты и передовую практику с помощью ограничений Framework (без выхода из этого и, следовательно, ограничения)
❸ Поддержка Spring аннотаций, а также JAX-WS
❹ Меньший код с точки зрения разработчиков
❺ Наилучшее согласование с технологическим стеком Spring (также похожий архитектурный стек как Spring MVC), включая Spring Безопасность
Основные проблемы:
❶ Наименьшее количество поддерживаемых WS- * спецификаций (не полностью соответствует JAX-WS)
❷ Spring предлагает себя в качестве стандарта, и, следовательно, другие совместимые с Java фреймворки поддерживают лучшую поддержку стандартов.
❸ Поддерживать только модель разработки веб-сервисов, основанных на контрактах
Ответ 6
Другой вариант, который следует учитывать при этом сравнении, - Enunciate.
Особенно, если вы хотите сначала начать с Java.
Ответ 7
Пожалуйста, просмотрите связанный пост по адресу: Создание веб-службы с Spring -WS