Обновленная информация о ландшафте веб-сервисов в 2013 году.
Веб-сервисы раньше были на основе SOAP и XML. Веб-сервисы были стандартизированы в JAX-WS. Вот некоторые из наиболее популярных фреймворков:
- Ось 1.x
- Ось 2
- Apache CXF - CXF также включает другие протоколы. Это гораздо более широкие рамки
- Веб-службы Metro, включающие в себя эталонную реализацию JAX-WS.
- Java 6 и Java 7 по умолчанию включают RI JAX-WS. Это означает, что фреймворки больше не нужны, кроме как для создания клиентских и сервисных заглушек / скелетов
Существуют и другие реализации, не перечисленные здесь, которые зависят от поставщика, например. WS-реализация IBM Websphere и WS-реализация Weblogic.
Обычно для создания веб-служб я бы порекомендовал Metro и JAX-WS RI.
Обратите внимание, что существует множество стандартов WS- *, например. WS-Security, которая не может быть частью всех реализаций WS.
Поскольку веб-сервисы существуют уже некоторое время, появились и другие альтернативы как с точки зрения архитектурного стиля, протокола и кодирования.
Например, XML раньше был де-факто кодировкой. JSON сейчас более распространен. Стоит взглянуть на Джексона, JSON-парсер или Google GSON. Основными аргументами в пользу JSON является то, что он прост в использовании, легок и удобен для разработчиков.
Вместе с JSON появился REST. ОТДЫХ - это архитектурный стиль. С помощью REST вы все еще можете реализовать «веб-сервисы» в смысле удаленных сервисов, которые можно легко использовать по сети. REST также был стандартизирован в семействе стандартов Java как JAX-RS. Некоторые из популярных реализаций JAX-RS включают CXF, Джерси и RESTLet.
Наконец, в блоке есть несколько новых детей, которые используют двоичные кодировки. Это Google Protocol Buffers и Apache Thrift. Их главная цель - производительность, а также более широкая поддержка других языков (Java, C #, Erland, Perl ...).
При разработке веб-сервиса сегодня вопрос должен быть:
- Я забочусь о производительности?
- хочу ли я получить доступ к услуге на разных языках?
- хочу ли я пользоваться мобильным телефоном?
Это должно помочь вам сделать свой выбор. Кроме того, я предпочитаю свести свои зависимости к минимуму. Это означает, что я предпочел бы взять что-то, что является родным для JRE или JDK, например. эталонная реализация JAX-WS или JAX-RS.