Проект

Общее

Профиль

WEB SERVICES » История » Версия 2

Александр Александров, 24.04.2019 00:24

1 1 Александр Александров
h1. WEB SERVICES
2
3
h2. Вопросы
4
5
# Что такое веб сервисы?
6
# В чем разница между SOA и web service?
7
# Что такое SOAP?
8
# Что такое REST?
9
# В чем разница между REST и SOAP веб сервисами?
10
# Как бы вы решили какой из REST или SOAP веб сервисов использовать?
11
# Объясните понятие WSDL.
12
# Что такое JAX-WS?
13
# Расскажите о JAXB.
14
# Можем ли мы посылать soap сообщения с вложением?
15
# Что такое MTOM?
16
# Что такое XOP?
17
# Объясните элемент SOAP envelope.
18
# Как определяется пространство имен SOAP?
19
# Что вы знаете о кодирование в SOAP (encoding)?
20
# Что определяет атрибут encodingStyle в SOAP?
21
# Какие два конечных типа веб сервисов используют JAX-WS?
22
# Какие существую правила для кодирования записи header?
23
# Что вы знаете об инструменте wsimport?
24
# Что вы знаете об инструменте wsgen?
25
# Какие вы можете выделить различия между SOAP и другими техниками удаленного доступа?
26
27
h2. Ответы
28
29
h3. Что такое веб сервисы?
30
31 2 Александр Александров
Веб-служба, веб-сервис (англ. web service) - идентифицируемая веб-адресом программная система со стандартизированными интерфейсами. Веб-службы могут взаимодействовать друг с другом и со сторонними приложениями посредством сообщений, основанных на определённых протоколах (SOAP, XML-RPC, REST и т. д.). Веб-служба является единицей модульности при использовании сервисориентированной архитектуры приложения. К характеристикам веб сервисов относят:
32
33
* Функциональная совместимость
34
* Расширяемость
35
* Возможность машинной обработки описания
36
37 1 Александр Александров
h3. В чем разница между SOA и web service?
38
39 2 Александр Александров
Сервис-ориентированная архитектура (SOA, service-oriented architecture) - модульный подход к разработке программного обеспечения, основанный на использовании распределённых, слабо связанных (англ. loose coupling) заменяемых компонентов, оснащённых стандартизированными интерфейсами для взаимодействия по стандартизированным протоколам. Программные комплексы, разработанные в соответствии с сервис-ориентированной архитектурой, обычно реализуются как набор веб-служб, взаимодействующих по протоколу SOAP, но существуют и другие реализации (например, на базе jini, CORBA, на основе REST). Веб сервисы реализующие эту концепцию используют XML, JSON и др., а так же интернет протоколы вроде HTTP(S), SMTP и др.
40
41 1 Александр Александров
h3. Что такое SOAP?
42
43 2 Александр Александров
SOAP (от англ. Simple Object Access Protocol - простой протокол доступа к объектам; вплоть до спецификации 1.2) - протокол обмена структурированными сообщениями в распределённой вычислительной среде. Первоначально SOAP предназначался в основном для реализации удалённого вызова процедур (RPC). Сейчас протокол используется для обмена произвольными сообщениями в формате XML, а не только для вызова процедур. Официальная спецификация последней версии 1.2 протокола никак не расшифровывает название SOAP. SOAP является расширением протокола XML-RPC.
44
45
SOAP может использоваться с любым протоколом прикладного уровня: SMTP, FTP, HTTP, HTTPS и др. Однако его взаимодействие с каждым из этих протоколов имеет свои особенности, которые должны быть определены отдельно. Чаще всего SOAP используется поверх HTTP.
46
47 1 Александр Александров
h3. Что такое REST?
48
49 2 Александр Александров
REST (сокр. от англ. Representational State Transfer – "передача состояния представления") - архитектурный стиль взаимодействия компонентов распределённого приложения в сети. REST представляет собой согласованный набор ограничений, учитываемых при проектировании распределённой гипермедиасистемы. В определённых случаях (интернет-магазины, поисковые системы, прочие системы, основанные на данных) это приводит к повышению производительности и упрощению архитектуры. В широком смысле компоненты в REST взаимодействуют наподобие взаимодействия клиентов и серверов во Всемирной паутине. REST является альтернативой RPC.
50
В сети Интернет вызов удалённой процедуры может представлять собой обычный HTTP-запрос (обычно GET или POST; такой запрос называют REST-запрос), а необходимые данные передаются в качестве параметров запроса. Для веб-сервисов, построенных с учётом REST, то есть не нарушающих накладываемых им ограничений, применяют термин "RESTful".
51
52 1 Александр Александров
h3. В чем разница между REST и SOAP веб сервисами?
53
54 2 Александр Александров
Некоторые отличия:
55
56
* REST поддерживает различные форматы: text, JSON, XML; SOAP - только XML;
57
* REST работает только по HTTP(S), а SOAP может работать с различными протоколами;
58
* REST может работать с ресурсами. Каждый URL это представление какого-либо ресурса. SOAP работает с операциями, которые реализуют какую-либо бизнес логику с помощью нескольких интерфейсов;
59
* SOAP на основе чтения не может быть помещена в кэш, а REST в этом случае может быть закэширован;
60
* SOAP поддерживает SSL и WS-security, в то время как REST - только SSL;
61
* SOAP поддерживает ACID (Atomicity, Consistency, Isolation, Durability). REST поддерживает транзакции, но не один из ACID не совместим с двух фазовым коммитом.
62
63 1 Александр Александров
h3. Как бы вы решили какой из REST или SOAP веб сервисов использовать?
64
65 2 Александр Александров
REST против SOAP можно перефразировать как "Простота против Стандарта". В случае REST (простота) у вас будет скорость, расширяемость и поддержка многих форматов. В случае с SOAP у вас будет больше возможностей по безопасности (WS-security) и транзакционная безопасность (ACID).
66
67 1 Александр Александров
h3. Объясните понятие WSDL.
68
69 2 Александр Александров
WSDL (англ. Web Services Description Language) - язык описания веб-сервисов и доступа к ним, основанный на языке XML. 
70
71
Каждый документ WSDL 1.1 можно разбить на следующие логические части:
72
73
* определение типов данных (types) - определение вида отправляемых и получаемых сервисом XML-сообщений;
74
* элементы данных (message) - сообщения, используемые web-сервисом;
75
* абстрактные операции (portType) - список операций, которые могут быть выполнены с сообщениями;
76
* связывание сервисов (binding) - способ, которым сообщение будет доставлено.
77
78
{{dmsf_image(320)}}
79
80 1 Александр Александров
h3. Что такое JAX-WS?
81
82 2 Александр Александров
Java API for XML Web Services (JAX-WS) - это прикладной программный интерфейс языка Java для создания веб-служб, являющийся частью платформы Java EE. JAX-WS является заменой технологии JAX-RPC, предоставляя более документоориентированную модель сообщений и упрощая разработку веб-служб за счёт использования аннотаций, впервые появившихся в Java SE 5. Технология JAX-WS является стандартом и описана в JSR 224. Некоторые преимущества:
83
84
* Использование аннотаций устраняет необходимость создания дескрипторов вебслужб.
85
* Декларация конечных точек (endpoints) происходит непосредственно в классах Java.
86
* Прямая интеграция с JAXB 2.0.
87
* Внедрение ресурсов (Resource injection).
88
* Поддержка MTOM.
89
* Возможность выбора между двумя путями разработки: снизу-вверх (программист разрабатывает endpoint-классы сам) и сверху-вниз (Java классы генерируются по WSDL).
90
91 1 Александр Александров
h3. Расскажите о JAXB.
92
93 2 Александр Александров
Java Architecture for XML Binding (JAXB) позволяет Java разработчикам ставить в соответствие Java классы и XML представления. JAXB предоставляет две основные возможности: сериализация Java объектов в XML и наоборот, то есть дессиреализация из XML обратно в Java объект. Другими словами, JAXB позволяет хранить и извлекать данные в памяти в любом XML-формате, без необходимости выполнения определенного набора процедур загрузки и сохранения XML.
94
95
JAXB особенно полезен, когда спецификация является сложной и меняющейся. В этом случае, постоянные изменения схемы XML определений для синхронизации их с определениями Java могут занять много времени и быть подвержены ошибкам.
96
97 1 Александр Александров
h3. Можем ли мы посылать soap сообщения с вложением?
98
99 2 Александр Александров
Да, это возможно. Можно посылать вложением различные форматы: PDF, изображения или другие двоичные данные. Сообщения SOAP работают вместе с расширением MIME, в котором предусмотрено multipart/related:
100
101
{{dmsf_image(321)}}
102
103 1 Александр Александров
h3. Что такое MTOM?
104
105 2 Александр Александров
MTOM (Message Transmission Optimization Mechanism) - использование кодирования сообщений с помощью механизма оптимизации передачи сообщений. Это механизм передачи больших вложений в двоичном формате с сообщениями протокола SOAP как необработанных байтов, допустимых для меньших сообщений.
106
107 1 Александр Александров
h3. Что такое XOP?
108
109 2 Александр Александров
XOP (XML-binary Optimized Packaging) - механизм, рекомендованный W3C для встраивания двоичных данных в набор информационных элементов XML (XML Information Set).
110
111 1 Александр Александров
h3. Объясните элемент SOAP envelope.
112
113 2 Александр Александров
Элемент SOAP envelope является корневым элементом SOAP сообщения и определяет XML документ как SOAP сообщение.
114
115
{{dmsf_image(322)}}
116
117 1 Александр Александров
h3. Как определяется пространство имен SOAP?
118
119 2 Александр Александров
<pre>
120
xmlns:soap=http://www.w3.org/2001/12/soap-envelope
121
</pre>
122
123 1 Александр Александров
h3. Что вы знаете о кодирование в SOAP (encoding)?
124
125 2 Александр Александров
Кодирование SOAP представляет собой метод для структурирования запроса, который предлагается в рамках спецификации SOAP, известный как SOAP-сериализация.
126
127 1 Александр Александров
h3. Что определяет атрибут encodingStyle в SOAP?
128
129 2 Александр Александров
SOAP encodingStyle определяет правила сериализации, используемые в сообщении SOAP. Этот атрибут может появиться на любом элементе, и область видимости этого атрибута будет распространяться на все дочерние элементы, даже на те, которые не имеют явно этого атрибута. Для сообщений SOAP по умолчанию кодирование не определено.
130
131
<pre>
132
SOAP-ENV:encodingStyle="http://www.w3.org/2001/12/soap-encoding"
133
</pre>
134
135 1 Александр Александров
h3. Какие два конечных типа веб сервисов используют JAX-WS?
136
137 2 Александр Александров
JAX-WS использует такие типа веб сервисов:
138
139
* RPC (remote procedure call) style web service в JAX-WS;
140
* document style web service в JAX-WS.
141
142 1 Александр Александров
h3. Какие существую правила для кодирования записи header?
143
144 2 Александр Александров
Правила для кодирования записи header:
145
146
* заголовок должен быть идентифицирован с помощью полного имени, которое содержит пространство имен URI и локальное имя. Все непосредственные дочерние элементы SOAP заголовка должны быть заданы в пространстве имен;
147
* атрибут SOAP encodingStyle должен использоваться для указания стиля кодирования заголовка;
148
* атрибут SOAP mustUnderstand и атрибут SOAP actor должны использоваться для указания того, как обрабатывать запись и кем.
149
150 1 Александр Александров
h3. Что вы знаете об инструменте wsimport?
151
152 2 Александр Александров
Инструмент wsimport используется для синтаксического анализа существующих Web Services Description Language (WSDL-файл) и генерировать необходимые файлы (JAXWS портируемые артефакты) для клиента веб-сервиса для доступа к опубликованному веб-сервису.
153
154 1 Александр Александров
h3. Что вы знаете об инструменте wsgen?
155
156 2 Александр Александров
Инструмент wsgen используется для анализа существующего класса реализации вебслужбы и создает необходимые файлы (JAX-WS портируемые артефакты) для развертывания веб-служб.
157
158 1 Александр Александров
h3. Какие вы можете выделить различия между SOAP и другими техниками удаленного доступа?
159 2 Александр Александров
160
Некоторые различия:
161
162
* SOAP проще в использовании, т.к. он не симметричный вроде DCOM или COBRA; 
163
* SOAP является более независимым от платформы и языка в отличие от DCOM или CORBA;
164
* SOAP использует HTTP в качестве транспортного протокола и данные сохраняются в формате XML, который может быть прочтен человеком, тогда как DCOM или CORBA имеют свои собственные бинарные форматы, которые используются для транспортировки данных сложным образом;
165
* SOAP идентифицирует объект, отличный от конечного URL. Объекты SOAP являются независимыми и их сложно поддерживать. В случае других методов удаленного доступа работа в этом случае может быть проще.
Go to top