Web-службы

advertisement
Web-службы
SOAP, WSDL, UDDI, GXA
суббота, 7 мая 2016 г.
XML-RPC
XML-RPC представляет собой определение
семантики удалённого вызова процедуры на XML.
Сообщение XML-RPC переносится методом POST
запроса HTTP, а ответ – в обычном ответе HTTP.
Запрос обычно содержит XML-документ с корневым
элементом methodCall, а ответ - XML-документ с
корневым элементом methodResponse.
В настоящий момент имеется более 30 реализаций
XML-RPC.
SOAP
SOAP (Simple Object Access Protocol) –
реализует наиболее важный аспект webсервисов – транспортировку данных по сети.
SOAP расширяет HTTP для возможности
передачи XML-сообщений, используемых для
удалённого взаимодействия и для передачи
целых XML-документов.
Схема SOAP-взаимодействия
Отправитель
XML-сообщение
SOAP-конверт
HTTP
SOAP-конверт
XML-сообщение
Получатель
Структура SOAP-сообщений
<?xml version=“1.0”>
<soap:Envelope xmlns:soap=“http://schemas.xmlsoap.org/soap/envelope/”>
<soap:Header>
…
</soap:Header>
<soap:Body>
…
</soap:Body>
</soap:Envelope>
Заголовок SOAP-сообщений
Заголовок является необязательным и обычно
служит для хранения следующих сведений:
аутентификация;
информация о защите;
маршрутная информация;
информация о транзакциях и т.д.
Тело SOAP-сообщений
SOAP-сообщения
процедурно-ориентированные
сообщения
запросы
ответы
документо-ориентированные
сообщения
кодированные бизнес-данные
RPC-сообщения в SOAP
Необходимо описать взаимодействие с методом
Add с использованием SOAP 1.1
public int Add (int x, int y)
{
return x + y;
}
Сообщение-запрос
<?xml version=“1.0” encoding=“utf-8”?>
<soap:Envelope
xmlns:soap=“http://schemas.xmlsoap.org/soap/envelope/”>
<soap:Body>
<Add>
<x>2</x>
<y>2</y>
</Add>
</soap:Body>
</soap:Envelope>
Сообщение-ответ
<?xml version=“1.0” encoding=“utf-8”?>
<soap:Envelope
xmlns:soap=“http://schemas.xmlsoap.org/soap/envelope/”>
<soap:Body>
<AddResult>
<result>4</result>
</AddResult>
</soap:Body>
</soap:Envelope>
SOAP-кодирование
Более сложные структуры данных можно описывать при
помощи механизмов типизации XMLSchema и SOAP-encoding
public int AddArray (int [] numbers)
{
int total = 0;
foreach (int number in numbers)
total += number;
return total;
}
SOAP-кодирование
<?xml version=“1.0” encoding=“utf-8”?>
<soap:Envelope
xmlns:soap=“http://schemas.xmlsoap.org/soap/envelope/”
xmlns:soap-enc=“http://schemas.xmlsoap.org/soap/encoding/”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”>
<soap:Body>
<AddArray>
<numbers soap-enc:arrayType=“xsi:int[3]”>
<int>1</int>
<int>2</int>
<int>3</int>
</numbers>
</AddArray>
</soap:Body>
</soap:Envelope>
Связывание протокола
POST /SomeWebService HTTP/1.1
Content-Type: text/xml
SOAPAction: “http://somedomain.com/SomeWebService.wsdl”
Content-Length: 243
Host: Somestation
<?xml version=“1.0” encoding=“utf-8”?>
<soap:Envelope
xmlns:soap=“http://schemas.xmlsoap.org/soap/envelope/”>
<soap:Body>
<Add>
<x>2</x>
<y>2</y>
</Add>
</soap:Body>
</soap:Envelope>
Связывание протокола
HTTP/1.1 200 OK
Server: Microsoft-IIS/6.0
Date: Sun, 29 Apr 2007 19:45:20 GMT
Content-Type: text/xml
Content-Length: 243
<?xml version=“1.0” encoding=“utf-8”?>
<soap:Envelope
xmlns:soap=“http://schemas.xmlsoap.org/soap/envelope/”>
<soap:Body>
<AddResult>
<result>4</result>
</AddResult>
</soap:Body>
</soap:Envelope>
WSDL
Документ WSDL (Web Service Description Language)
предоставляет информацию, которая необходима
клиенту для взаимодействия с web-сервисом.
WSDL-документ состоит из пяти элементов, содержащихся под
корневым элементом definitions:
types;
message;
portType;
binding;
service
Элементы WSDL
Элемент types содержит определения схемы для обмена данными
между клиентом и сервером. Язык схемы по умолчанию – XMLSchema.
Элемент message идентифицирует отдельное сообщение, которым могут
обмениваться клиент и сервер. Сообщение состоит из одного или
нескольких фрагментов. Каждый фрагмент представляется элементом part и
ссылается на элемент или определение типа, заданного внутри элемента
types.
Элемент portTypes содержит один или несколько элементов operation.
Операцию можно считать соглашением о том, при помощи каких сообщений
message клиент и сервер будут взаимодействовать друг с другом.
Элементы WSDL
Элемент binding применяется для связывания типа порта с
отдельным протоколом с помощью элементов расширения.
Элемент service содержит один или несколько элементов
port. Элемент port используется для определения адреса
web-сервиса, поддерживающего конкретное связывание.
Диаграмма описания сервиса
Сервис
Порт
Порт
Порт
Тип порта
Тип порта
Тип порта
Операция
Операция
Операция
Сообщение (входное)
Сообщение (выходное)
Сообщение (входное)
Сообщение (выходное)
Сообщение (входное)
Сообщение (выходное)
Операция
Операция
Операция
Сообщение (входное)
Сообщение (выходное)
Сообщение (входное)
Сообщение (выходное)
Сообщение (входное)
Сообщение (выходное)
Привязка
Привязка
Привязка
Сетевой адрес
Сетевой адрес
Сетевой адрес
UDDI
UDDI (Universal Description, Discovery and Integration)
представляет собой иерархический реестр,
являющийся центральным хранилищем для
опубликованных технических спецификаций и
информации о компаниях.
Реестр UDDI сам по себе является web-сервисом. Он
предоставляет API, основанный на SOAP.
UDDI API
Версия UDDI 1.0 предоставляет около 30 методов для
обеспечения с реестром.
Требования допустимости UDDI-сообщений:
SOAP-сообщение должно быть закодировано в UTF-8;
элементы внутри тела UDDI-документа должны быть видимы
внутри пространства имён UDDI API, определяемым URI
urn:uddi-org:api;
запрос должен содержать пустой HTTP-заголовок SOAPAction;
в тело сообщения при помощи атрибута generic должна быть
внедрена версия API.
UDDI API
Методы опроса
find_
get_
Методы публикации
save_
delete_
Основные типы данных UDDI API
tModel. Используется для ссылки на техническую
спецификацию в виде WSDL или транспортный
протокол.
buisnessEntity. Компания или её структурное
подразделение.
buisnessService. Набор сервисов,
предоставляемых компанией.
bindingTemplate. Описывает отдельный сервис,
включая его конечную точку и техническую
спецификацию.
Проблемы Web-сервисов
обнаружение клиентом;
безопасность;
маршрутизация сообщений;
адресная служба (служба направлений);
GXA
Global XML Web Services Architecture
Язык контроля Web-сервисов (WS-Inspection)
Язык обеспечения безопасности Web-сервисов (WS-Security)
Язык лицензирования Web-сервисов (WS-License)
Протокол маршрутизации Web-сервисов (WS-Routing)
Протокол направлений Web-сервисов (WS-Referral)
Безопасность web-сервисов
Технологии, предоставляемые HTTP:
Механизмы аутентификации web-сервера;
SSL/TLS или IPSec для защиты каналов передачи данных;
Криптографические алгоритмы для шифрования и подписи данных;
Механизмы, предоставляемые модулями WS-Security и WS-License:
Пересылка персональных параметров доступа;
Обеспечение целостности сообщений;
Обеспечение конфиденциальности сообщений;
Download