Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Типы веб-сервисов

На концептуальном уровне сервис представляет собой программный компонент, предоставляемый через доступную по сети конечную точку. Потребитель и поставщик услуг используют для обмена в запросах и ответах сообщения в виде документов, не зависящих от технических особенностей принимающей стороны.

Технически веб-сервисы могут быть реализованы различными способами. Два типа веб-сервисов, обсуждаемые в этом разделе, можно различить как «большие» веб-сервисы и «RESTful» веб-сервисы.

Здесь рассматриваются следующие темы:

«Большие» веб-сервисы

JAX-WS предоставляет функциональные возможности для «больших» веб-сервисов, которые описаны в главе 31 «Создание веб-сервисов с помощью JAX-WS». Большие веб-сервисы используют сообщения XML, оформленные по стандарту SOAP — языку XML, определяющему архитектуру и форматы сообщений. Такие системы часто содержат машиночитаемое описание предлагаемых сервисом операций на языке описания веб-сервисов (WSDL) — языке XML для синтаксического описания интерфейсов.

Примечание: JAX-WS перемещён в Java SE 8 и не включён в платформу Java EE 8. Однако JAX-WS API остаётся доступным для использования в приложениях EE.

Формат сообщений SOAP и язык определения интерфейсов WSDL получили широкое распространение. Многие инструменты разработки, такие как IDE NetBeans, могут снизить сложность разработки приложений веб-сервисов.

Проект SOAP должен включать следующие элементы.

  • Должен быть установлен официальный договор для описания интерфейса, предлагаемого веб-сервисом. WSDL может использоваться для описания деталей контракта, которые могут включать в себя сообщения, операции, привязки и местоположение веб-сервиса. Для обработки сообщений SOAP в сервисе JAX-WS публикация WSDL не обязательна.

  • Архитектура должна удовлетворять сложным нефункциональным требованиям. Многие спецификации веб-сервисов отвечают этим требованиям и устанавливают для них общий словарь. Примерами могут служить транзакции, безопасность, адресация, доверие, координирование и так далее.

  • Архитектура должна уметь обрабатывать асинхронную обработку и вызов. В таких случаях инфраструктура, обеспечиваемая стандартами, такими как Web Services Reliable Messaging Protocol (WSRM), и API, такими как JAX-WS, с поддержкой асинхронного вызова на стороне клиента, могут быть использованы сразу после установки.

RESTful веб-сервисы

В Java EE JAX-RS обеспечивает функциональность для RESTful веб-сервисов. REST хорошо подходит для базовых сценариев интеграции ad hoc. RESTful веб-сервисы зачастую лучше интегрированы с HTTP, чем SOAP сервисы, не требуют сообщений XML или файлов WSDL.

Проект Jersey — готовая к использованию эталонная реализация для спецификации JAX-RS. В Jersey реализована поддержка аннотаций, определённых в спецификации JAX-RS, что облегчает разработчикам создание RESTful веб-сервисов с Java и виртуальной машиной Java (JVM).

Поскольку RESTful веб-сервисы используют существующие хорошо известные стандарты W3C и Internet Engineering Task Force (IETF) (HTTP, XML, URI, MIME) и имеют легковесную инфраструктуру, позволяющую создавать сервисы с минимальным набором инструментов, разработка RESTful веб-сервисов стоит недорого и таким образом, имеет очень низкий барьер для внедрения. Вы можете использовать IDE NetBeans, чтобы ещё больше снизить сложность разработки RESTful веб-сервисов.

Дизайн RESTful можно назвать подходящим, если выполняются следующие условия.

  • Веб-сервисы не сохраняют состояния. Хорошим тестом является проверка того, может ли взаимодействие клиента и сервера пережить перезапуск сервера.

  • Инфраструктура кэширования может быть использована для повышения производительности. Если данные, возвращаемые веб-сервисом, не генерируются динамически и могут быть кэшированы, инфраструктура кэширования, предоставляемая веб-серверами и другими посредниками, может быть использована для повышения производительности. Однако разработчик должен позаботиться о том, чтобы такие кэши были ограничены HTTP GET-методом для большинства серверов.

  • Производитель и потребитель сервисов имеют общее понимание относительно контекста и передаваемого содержимого. Поскольку не существует формального способа описания интерфейсов веб-сервисов, обе стороны должны прийти к соглашению о схемах, описывающих обмениваемые данные, и о способах их осмысленной обработки. В реальном мире большинство коммерческих приложений, которые предоставляют свои сервисы в виде RESTful веб-сервисов, также распространяют и инструкции, которые описывают интерфейсы для разработчиков на популярных языках программирования.

  • Пропускная способность особенно важна и должна быть ограничена. REST особенно полезен для устройств с ограниченными возможностями, такими как КПК и мобильные телефоны, для которых нужно минимизировать накладные расходы на обработку заголовка и элементов SOAP в содержательной части XML.

  • С использованием подхода RESTful можно легко подключить функциональность веб-сервисов на существующие веб-сайты. Разработчики могут использовать технологии JAX-RS, Ajax и им подобные и фреймворки типа Direct Web Remoting (DWR) для использования сервисов в своих веб-приложениях. Вместо того, чтобы начинать с нуля, сервисы могут быть представлены с помощью XML и использоваться HTML-страницами без значительных изменений в существующей архитектуре веб-сайта. Продуктивность разработки растёт, потому что используется уже имеющийся у разработчиков опыт вместо того, чтобы начинать с нуля с новой технологией.

RESTful веб-сервисы обсуждаются в главе 32 «Создание RESTful веб-сервисов с JAX-RS». В этой главе содержится информация о создании каркаса RESTful веб-сервиса с IDE NetBeans и инструмента управления проектами Maven.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)