Цепочки фильтров сообщений
Сервисориентированная архитектура. Фрэймворк Axis2/C
Данилов И. Г.
ассистент каф. МОП ЭВМ
21 / 42
Apache Axis2/C
Сервисориентированная архитектура. Фрэймворк Axis2/C
Данилов И. Г.
ассистент каф. МОП ЭВМ
Apache Axis2/C модульная кроссплатформенная инфраструктура для создания и развёртывания веб-сервисов, реализованная на языке C и поддерживающая следующие WS стандарты:
SOAP 1.1, SOAP 1.2, REST;
WS-Addressing;
WS-Policy;
WS-Eventing;
...
22 / 42
Сравнение производительности C и Java реализаций
Сервисориентированная архитектура. Фрэймворк Axis2/C
Данилов И. Г.
ассистент каф. МОП ЭВМ
23 / 42
Архитектура Axis2/C. Потоки, фазы, обработчики, модули.
Сервисориентированная архитектура. Фрэймворк Axis2/C
Данилов И. Г.
ассистент каф. МОП ЭВМ
24 / 42
Методы разработки веб-сервисов
Сервисориентированная архитектура. Фрэймворк Axis2/C
Данилов И. Г.
ассистент каф. МОП ЭВМ
“снизу-вверх” сначала пишутся имплементирующие классы, а из их исходного текста генерируются WSDL-файлы, документирующие службу;
“сверху-вниз”, contract-first сначала подготавливается WSDL, а из него генерируется скелет класса/функции, имплементирующих службу.
25 / 42
Разработка “снизу-вверх” для Axis2/C
Сервисориентированная архитектура. Фрэймворк Axis2/C
Данилов И. Г.
ассистент каф. МОП ЭВМ
Для предоставления сервиса необходимо реализовать следующие функции интерфейса (структура axis2_svc_skeleton):
init() инициализация;
free() уничтожение;
invoke() непосредственно реализация бизнес-логики;
on_fault() при возникновении исключительных ситуаций.
26 / 42
Разработка “снизу-вверх” для Axis2/C. Пример функции invoke()
Сервисориентированная архитектура. Фрэймворк Axis2/C
Данилов И. Г.
ассистент каф. МОП ЭВМ
1axiom_node_t AXIS2_CALL
2 |
math_invoke ( axis2_svc_skeleton_t svc_skeleton , |
|
3 |
c o n s t axis2_env_t env , |
|
4 |
axiom_node_t node , |
|
5 |
axis2_msg_ctx_t msg_ctx ) |
|
6 |
{ |
|
7 |
. . . |
|
8 |
i f ( op_name ) { |
|
9 |
i f ( AXIS2_STRCMP ( op_name , " add " ) |
== 0 ) |
10 |
r e t u r n your_business_logic ( env , |
node ) ; |
11 |
} |
|
12 |
} |
|
13 |
. . . |
|
14 |
r e t u r n fault_node ; |
|
15 |
} |
|
27 / 42
Разработка “сверху-вниз” для Axis2/C
Сервисориентированная архитектура. Фрэймворк Axis2/C
Данилов И. Г.
ассистент каф. МОП ЭВМ
пишем WSDL-файл описание веб-службы;
генерируем с помощью утилиты WSDL2C.sh файлы заглушек на языке C;
реализуем логику приложения на основе сгенерированных файлов.
28 / 42
Сервис калькулятор. WSDL-файл. Типы
Сервисориентированная архитектура. Фрэймворк Axis2/C
Данилов И. Г.
ассистент каф. МОП ЭВМ
1 <wsdl:types>
2<schema xmlns:impl="http://localhost/axis/Calculator" ...>
3 |
<element name="add"> |
4<complexType>
5 <sequence>
6<element name="arg_0_0" type="xsd:int"/>
7 |
<element name="arg_1_0" type="xsd:int"/> |
8</sequence>
9 |
</complexType> |
10</element>
11
12<element name="addResponse">
13 |
<complexType> |
14 |
<sequence> |
15 |
<element name="addReturn" type="xsd:int"/> |
16 |
</sequence> |
17 |
</complexType> |
18</element>
19 </schema>
20</wsdl:types>
29 / 42
Сервис калькулятор. WSDL-файл. Сообщения
Сервис- |
|
|
ориентир- |
|
|
ованная |
1 |
<wsdl:message name="addResponse"> |
архитектура. |
||
Фрэймворк |
2 |
|
Axis2/C |
|
|
Данилов И. |
3 |
<wsdl:part element="impl:addResponse" name=" |
Г. |
|
parameters"/> |
ассистент |
|
|
каф. МОП |
4 |
|
ЭВМ |
|
|
|
5 |
</wsdl:message> |
|
6 |
|
|
7 |
<wsdl:message name="addRequest"> |
|
8 |
|
|
9 |
<wsdl:part element="impl:add" name="parameters"/> |
|
10 |
|
|
11 |
</wsdl:message> |
|
|
|
30 / 42