Ответы на вопросы на собеседование Web services.

  • Что такое веб сервисы?

Веб-служба, веб-сервис (англ. web service) - идентифицируемая веб-адресом программная система со стандартизированными интерфейсами. Веб-службы могут взаимодействовать друг с другом и со сторонними приложениями посредством сообщений, основанных на определённых протоколах (SOAP, XML-RPC, REST и т. д.). Веб-служба является единицей модульности при использовании сервис-ориентированной архитектуры приложения. К характеристикам веб сервисов относят: 
  • Функциональная совместимость
  • Расширяемость
  • Возможность машинной обработки описания


  • В чем разница между SOA и web service?

Сервис-ориентированная архитектура (SOA, service-oriented architecture) - модульный подход к разработке программного обеспечения, основанный на использовании распределённых, слабо связанных (англ. loose coupling) заменяемых компонентов, оснащённых стандартизированными интерфейсами для взаимодействия по стандартизированным протоколам. Программные комплексы, разработанные в соответствии с сервис-ориентированной архитектурой, обычно реализуются как набор веб-служб, взаимодействующих по протоколу SOAP, но существуют и другие реализации (например, на базе jini, CORBA, на основе REST). Веб сервисы реализующие эту концепцию используют XML, JSON и др., а так же интернет протоколы вроде HTTP(S), 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(S), а 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?


  • Что вы знаете о кодирование в SOAP (encoding)?

Кодирование SOAP представляет собой метод для структурирования запроса, который предлагается в рамках спецификации SOAP, известный как SOAP-сериализация.

  • Что определяет атрибут encodingStyle в SOAP?

SOAP encodingStyle определяет правила сериализации, используемые в сообщении SOAP. Этот атрибут может появиться на любом элементе, и область видимости этого атрибута будет распространяться на все дочерние элементы, даже на те, которые не имеют явно этого атрибута. Для сообщений SOAP по умолчанию кодирование не определено.

  • Какие два конечных типа веб сервисов используют 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-файл) и генерировать необходимые файлы (JAX-WS портируемые артефакты) для клиента веб-сервиса для доступа к опубликованному веб-сервису.

  • Что вы знаете об инструменте wsgen?

Инструмент wsgen используется для анализа существующего класса реализации веб-службы и создает необходимые файлы (JAX-WS портируемые артефакты) для развертывания веб-служб.

  • Какие вы можете выделить различия между SOAP и другими техниками удаленного доступа?

Некоторые различия:

  • SOAP проще в использовании, т.к. он не симметричный вроде DCOM или COBRA
  • SOAP является более независимым от платформы и языка в отличие от DCOM или CORBA
  • SOAP использует HTTP в качестве транспортного протокола и данные сохраняются в формате XML, который может быть прочтен человеком, тогда как DCOM или CORBA имеют свои собственные бинарные форматы, которые используются для транспортировки данных сложным образом
  • SOAP идентифицирует объект, отличный от конечного URL. Объекты SOAP являются независимыми и их сложно поддерживать. В случае других методов удаленного доступа работа в этом случае может быть проще

Рассказать друзьям:

3 коментарі :

  1. Разница между SOAP & REST, 2 пункт: "REST работает только по HTTP(S)" не ошибка ли? "REST is protocol independent. It's not coupled to HTTP. Pretty much like you can follow an ftp link on a website, a REST application can use any protocol for which there is an standardized URI scheme." (source: http://stackoverflow.com/a/19884975/3709866)

    ОтветитьУдалить
    Ответы
    1. REST даже не архитектура, а архитектурный стиль. Конкретная архитектура в этом стиле может быть построена с использованием разных протоколов, не только HTTP. Хотя наверное 100% реальных примеров — на HTTP %) https://habrahabr.ru/post/158605/

      Удалить
  2. Т.e. SOAP это работа с какими-то бизнес сценариями реализованными на веб-сервере? Мы вызываем конкретные функции (например java)?

    ОтветитьУдалить