WEB SERVICES¶
Вопросы¶
- Что такое веб сервисы?
- В чем разница между SOA и web service?
- Что такое SOAP?
- Что такое REST?
- В чем разница между REST и SOAP веб сервисами?
- Как бы вы решили какой из REST или SOAP веб сервисов использовать?
- Объясните понятие WSDL.
- Что такое JAX-WS?
- Расскажите о JAXB.
- Можем ли мы посылать soap сообщения с вложением?
- Что такое MTOM?
- Что такое XOP?
- Объясните элемент SOAP envelope.
- Как определяется пространство имен SOAP?
- Что вы знаете о кодирование в SOAP (encoding)?
- Что определяет атрибут encodingStyle в SOAP?
- Какие два конечных типа веб сервисов используют JAX-WS?
- Какие существую правила для кодирования записи header?
- Что вы знаете об инструменте wsimport?
- Что вы знаете об инструменте wsgen?
- Какие вы можете выделить различия между SOAP и другими техниками удаленного доступа?
Ответы¶
Что такое веб сервисы?¶
Веб-служба, веб-сервис (англ. web service) - идентифицируемая веб-адресом программная система со стандартизированными интерфейсами. Веб-службы могут взаимодействовать друг с другом и со сторонними приложениями посредством сообщений, основанных на определённых протоколах (SOAP, XML-RPC, REST и т. д.). Веб-служба является единицей модульности при использовании сервисориентированной архитектуры приложения. К характеристикам веб сервисов относят:
- Функциональная совместимость
- Расширяемость
- Возможность машинной обработки описания
В чем разница между SOA и web service?¶
Сервис-ориентированная архитектура (SOA, service-oriented architecture) - модульный подход к разработке программного обеспечения, основанный на использовании распределённых, слабо связанных (англ. loose coupling) заменяемых компонентов, оснащённых стандартизированными интерфейсами для взаимодействия по стандартизированным протоколам. Программные комплексы, разработанные в соответствии с сервис-ориентированной архитектурой, обычно реализуются как набор веб-служб, взаимодействующих по протоколу SOAP, но существуют и другие реализации (например, на базе jini, CORBA, на основе REST). Веб сервисы реализующие эту концепцию используют XML, JSON и др., а так же интернет протоколы вроде HTTP, SMTP и др.
Что такое SOAP?¶
SOAP (от англ. Simple Object Access Protocol - простой протокол доступа к объектам; вплоть до спецификации 1.2) - протокол обмена структурированными сообщениями в распределённой вычислительной среде. Первоначально SOAP предназначался в основном для реализации удалённого вызова процедур (RPC). Сейчас протокол используется для обмена произвольными сообщениями в формате XML, а не только для вызова процедур. Официальная спецификация последней версии 1.2 протокола никак не расшифровывает название SOAP. SOAP является расширением протокола XML-RPC.
SOAP может использоваться с любым протоколом прикладного уровня: SMTP, FTP, HTTP, HTTPS и др. Однако его взаимодействие с каждым из этих протоколов имеет свои особенности, которые должны быть определены отдельно. Чаще всего SOAP используется поверх HTTP.
Что такое REST?¶
REST (сокр. от англ. Representational State Transfer – "передача состояния представления") - архитектурный стиль взаимодействия компонентов распределённого приложения в сети. REST представляет собой согласованный набор ограничений, учитываемых при проектировании распределённой гипермедиасистемы. В определённых случаях (интернет-магазины, поисковые системы, прочие системы, основанные на данных) это приводит к повышению производительности и упрощению архитектуры. В широком смысле компоненты в REST взаимодействуют наподобие взаимодействия клиентов и серверов во Всемирной паутине. REST является альтернативой RPC.
В сети Интернет вызов удалённой процедуры может представлять собой обычный HTTP-запрос (обычно GET или POST; такой запрос называют REST-запрос), а необходимые данные передаются в качестве параметров запроса. Для веб-сервисов, построенных с учётом REST, то есть не нарушающих накладываемых им ограничений, применяют термин "RESTful".
В чем разница между REST и SOAP веб сервисами?¶
Некоторые отличия:
- REST поддерживает различные форматы: text, JSON, XML; SOAP - только XML;
- REST работает только по HTTP, а SOAP может работать с различными протоколами;
- REST может работать с ресурсами. Каждый URL это представление какого-либо ресурса. SOAP работает с операциями, которые реализуют какую-либо бизнес логику с помощью нескольких интерфейсов;
- SOAP на основе чтения не может быть помещена в кэш, а REST в этом случае может быть закэширован;
- SOAP поддерживает SSL и WS-security, в то время как REST - только SSL;
- SOAP поддерживает ACID (Atomicity, Consistency, Isolation, Durability). REST поддерживает транзакции, но не один из ACID не совместим с двух фазовым коммитом.
Как бы вы решили какой из REST или SOAP веб сервисов использовать?¶
REST против SOAP можно перефразировать как "Простота против Стандарта". В случае REST (простота) у вас будет скорость, расширяемость и поддержка многих форматов. В случае с SOAP у вас будет больше возможностей по безопасности (WS-security) и транзакционная безопасность (ACID).
Объясните понятие WSDL.¶
WSDL (англ. Web Services Description Language) - язык описания веб-сервисов и доступа к ним, основанный на языке XML.
Каждый документ WSDL 1.1 можно разбить на следующие логические части:
- определение типов данных (types) - определение вида отправляемых и получаемых сервисом XML-сообщений;
- элементы данных (message) - сообщения, используемые web-сервисом;
- абстрактные операции (portType) - список операций, которые могут быть выполнены с сообщениями;
- связывание сервисов (binding) - способ, которым сообщение будет доставлено.
Что такое JAX-WS?¶
Java API for XML Web Services (JAX-WS) - это прикладной программный интерфейс языка Java для создания веб-служб, являющийся частью платформы Java EE. JAX-WS является заменой технологии JAX-RPC, предоставляя более документоориентированную модель сообщений и упрощая разработку веб-служб за счёт использования аннотаций, впервые появившихся в Java SE 5. Технология JAX-WS является стандартом и описана в JSR 224. Некоторые преимущества:
- Использование аннотаций устраняет необходимость создания дескрипторов вебслужб.
- Декларация конечных точек (endpoints) происходит непосредственно в классах Java.
- Прямая интеграция с JAXB 2.0.
- Внедрение ресурсов (Resource injection).
- Поддержка MTOM.
- Возможность выбора между двумя путями разработки: снизу-вверх (программист разрабатывает endpoint-классы сам) и сверху-вниз (Java классы генерируются по WSDL).
Расскажите о JAXB.¶
Java Architecture for XML Binding (JAXB) позволяет Java разработчикам ставить в соответствие Java классы и XML представления. JAXB предоставляет две основные возможности: сериализация Java объектов в XML и наоборот, то есть дессиреализация из XML обратно в Java объект. Другими словами, JAXB позволяет хранить и извлекать данные в памяти в любом XML-формате, без необходимости выполнения определенного набора процедур загрузки и сохранения XML.
JAXB особенно полезен, когда спецификация является сложной и меняющейся. В этом случае, постоянные изменения схемы XML определений для синхронизации их с определениями Java могут занять много времени и быть подвержены ошибкам.
Можем ли мы посылать soap сообщения с вложением?¶
Да, это возможно. Можно посылать вложением различные форматы: PDF, изображения или другие двоичные данные. Сообщения SOAP работают вместе с расширением MIME, в котором предусмотрено multipart/related:
Что такое MTOM?¶
MTOM (Message Transmission Optimization Mechanism) - использование кодирования сообщений с помощью механизма оптимизации передачи сообщений. Это механизм передачи больших вложений в двоичном формате с сообщениями протокола SOAP как необработанных байтов, допустимых для меньших сообщений.
Что такое XOP?¶
XOP (XML-binary Optimized Packaging) - механизм, рекомендованный W3C для встраивания двоичных данных в набор информационных элементов XML (XML Information Set).
Объясните элемент SOAP envelope.¶
Элемент SOAP envelope является корневым элементом SOAP сообщения и определяет XML документ как SOAP сообщение.
Как определяется пространство имен SOAP?¶
xmlns:soap=http://www.w3.org/2001/12/soap-envelope
Что вы знаете о кодирование в SOAP (encoding)?¶
Кодирование SOAP представляет собой метод для структурирования запроса, который предлагается в рамках спецификации SOAP, известный как SOAP-сериализация.
Что определяет атрибут encodingStyle в SOAP?¶
SOAP encodingStyle определяет правила сериализации, используемые в сообщении SOAP. Этот атрибут может появиться на любом элементе, и область видимости этого атрибута будет распространяться на все дочерние элементы, даже на те, которые не имеют явно этого атрибута. Для сообщений SOAP по умолчанию кодирование не определено.
SOAP-ENV:encodingStyle="http://www.w3.org/2001/12/soap-encoding"
Какие два конечных типа веб сервисов используют JAX-WS?¶
JAX-WS использует такие типа веб сервисов:
- RPC (remote procedure call) style web service в JAX-WS;
- document style web service в JAX-WS.
Какие существую правила для кодирования записи header?¶
Правила для кодирования записи header:
- заголовок должен быть идентифицирован с помощью полного имени, которое содержит пространство имен URI и локальное имя. Все непосредственные дочерние элементы SOAP заголовка должны быть заданы в пространстве имен;
- атрибут SOAP encodingStyle должен использоваться для указания стиля кодирования заголовка;
- атрибут SOAP mustUnderstand и атрибут SOAP actor должны использоваться для указания того, как обрабатывать запись и кем.
Что вы знаете об инструменте wsimport?¶
Инструмент wsimport используется для синтаксического анализа существующих Web Services Description Language (WSDL-файл) и генерировать необходимые файлы (JAXWS портируемые артефакты) для клиента веб-сервиса для доступа к опубликованному веб-сервису.
Что вы знаете об инструменте wsgen?¶
Инструмент wsgen используется для анализа существующего класса реализации вебслужбы и создает необходимые файлы (JAX-WS портируемые артефакты) для развертывания веб-служб.
Какие вы можете выделить различия между SOAP и другими техниками удаленного доступа?¶
Некоторые различия:
- SOAP проще в использовании, т.к. он не симметричный вроде DCOM или COBRA;
- SOAP является более независимым от платформы и языка в отличие от DCOM или CORBA;
- SOAP использует HTTP в качестве транспортного протокола и данные сохраняются в формате XML, который может быть прочтен человеком, тогда как DCOM или CORBA имеют свои собственные бинарные форматы, которые используются для транспортировки данных сложным образом;
- SOAP идентифицирует объект, отличный от конечного URL. Объекты SOAP являются независимыми и их сложно поддерживать. В случае других методов удаленного доступа работа в этом случае может быть проще.
Updated by Александр Александров over 5 years ago · 2 revisions
Go to top