Лекция 3. Web-службы. - Радченко Глеб Игоревич

advertisement
Ю
У
р
Г
У
МехМат
С
П
Грид технологии
Лекция 3
Web-службы. WSDL. SOAP
Радченко Глеб Игоревич, каф. СП, ЮУрГУ
http://dom.susu.ru/grid.htm
Ю
Содержание
2
1.
Введение. Технология RPC и Web службы
2.
Основные определения и стандарты первого
поколения
3.
Стандарт WSDL
4.
Стандарт SOAP
У
р
Г
МехМат
С
П
У
1
Введение. Технология RPC и Web
службы
Ю
У
Распределенные вычисления
р
Г
У
МехМат
С
П
4
Объектно-ориентированный подход
CORBA (Common Request Broker Architecture)
Java Remote Method Invocation (RMI)
Адаптация для
компонентов
Web грид, стандарты
службы второго поколения
Удаленный вызов процедур
(Remote Procedure calls - RPC)
Концепция регистра служб
Начало СОА
Сокеты
XML
Клиент-серверная модель
Языки разметки, HTML
Сети
Internet
1985
1990
WWW
1995
2000
2007
Barry Wilkinson, Grid Computing Cource Slides, University of North Carolina
Технология RPC (удаленный вызов
процедур)
5



Реализация поддержки клиент-серверной
архитектуры
Обеспечивает возможность локального
приложения вызвать процедуру на удаленном
компьютере и получить результаты работы
процедуры
Примеры реализации:
Sun RPC
 .Net Remouting
 Java RMI
 CORBA

Ю
У
р
Г
МехМат
С
П
У
Ю
Недостатки RPC
У
р
Г
МехМат
С
6

Отсутствие универсальных, стандартизованных
интерфейсов

Двоичный формат обмена информацией

Отсутствие функциональной совместимости
различных стандартов

Сложности с организацией взаимодействия
посредством Internet
П
У
Ю
У
р
Г
МехМат
Появление Web служб (Web Services)
7

Представлены в 2000 г.

Это основанная на XML платформеннонезависимая технология поддержки
распределенных вычислений.

Позволяет взаимодействовать клиентам и
серверам независимо от платформы
реализации и языка программирования.
С
П
У
Ю
Области применения Web-служб
У
р
Г
МехМат
С
8

Осуществление совместного использования
информации путем объединения внутренних
ресурсов отдельных компаний (B2B)

Готовые модули для разработчиков

Обеспечение дополнительных товарных
качеств клиентским приложениям

Инструменты для обеспечения взаимодействия
программ в рамках одной компании
П
У
2
Основные определения и
стандарты первого поколения
Ю
XML Web службы
У
р
МехМат
С
10


XML Web службы (Web-сервисы) – это
программные компоненты, которые позволяют
создавать независимые масштабируемые
слабосвязанные приложения.
В основе их функционирования лежит
использование протоколов HTTP, XML, XSD,
SOAP, WSDL.
Г
П
У
Ю
У
р
Г
МехМат
WSDL: Web Service Definition Language
С
П
11

WSDL – это стандартный XML-документ,
описывающий фундаментальные свойств Web
службы, как то:
 Что
это – описание методов, предоставляемые
Web службой;
 Как
осуществляется доступ – формат данных и
протоколы;
 Где
он расположен – специальный сетевой адрес
службы.
Borja Sotomayor . The Globus Toolkit 4 Programmer’s Tutorial. University of Chicago Department of Computer Science
У
SOAP (уже не только Simple Object
Access Protocol)
Ю
У
р
МехМат
С
12


SOAP – это протокол, основанный на обмене XMLдокументами.
SOAP определяется следующим образом: «SOAP
это протокол обмена информацией в
децентрализованной распределенной среде. Это
протокол основанный на XML, состоящий из 3-х
частей:
обертка, определяющая среду для описания
содержимого сообщения и как его обрабатывать;
 набор правил кодирования для выражения сущностей
типов данных, определенных в приложении;
 конвенция осуществления удаленного запуска
процедур и получения ответов.»

Г
П
У
Ю
SOAP
13

Предоставляет механизмы для:
 определения
коммуникационной единицы –
сообщения SOAP;
 обработки ошибок;
 репрезентации данных;
 удаленного вызова процедур;
 связи с HTTP.
У
р
Г
МехМат
С
П
У
Ю
Стек протоколов Web служб
У
р
Г
У
МехМат
С
П
14
Процесс
Обнаружение, Объединение,
Взаимодействие
Описание
Опиание Web служб (WSDL)
Сообщения
Расширения SOAP
SOAP
Базовые технологии: XML, XSLT…
Б
Е
З
О
П
А
С
Н
О
С
Т
Ь
У
П
Р
А
В
Л
Е
Н
И
Е
Связь
HTTP, SMTP, FTP …
W3C Standards
15
Типичный пример вызова Web
службы
Где найти
«службу погоды»?
Ю
У
р
Г
МехМат
С
П
Сервер 1
Служба
обнаружения
«Служба погоды» доступна на Сервере 2
Каким образом запустить службу?
Клиент
Сервер 2
Описание методов: WSDL
Запрос SOAP:
выполнить getWeatherInfo()
с параметром ’74’
Webсервис
Ответ SOAP:
«+2..+4, облачно, возможен дождь»
Borja Sotomayor . The Globus Toolkit 4 Programmer’s Tutorial. University of Chicago Department of Computer Science
У
Ю
Адресация Web служб
У
р
Г
МехМат
С
П
16

Адрес Web службы – это стандартный URI (Uniform
Resource Identifer).
http://live.capescience.com/ccx/GlobalWeather

BTW: URL (Uniform Resource Locator) является одним из видов URI,
и является прародителем URI.
У
Ю
Серверная часть Web служб
У
р
Г
МехМат
С
П
17
HTTP (Web) Server
Сервер приложений
SOAP Engine
Web
служба
Web
служба
Web
служба
Borja Sotomayor . The Globus Toolkit 4 Programmer’s Tutorial. University of Chicago Department of Computer Science
У
18
Программные среды для
разработки Web-сервисов
Ю
У
р
Г
МехМат
С

Apache Axis, на базе, например, Apache Tomcat

IBM Websphere

Microsoft .NET

J2EE (Java 2 Enterprise Edition) server container
П
У
Ю
Примеры Web служб
У
р
Г
У
МехМат
С
П
19
Алексей Федоров. Web-службы вчера, сегодня, завтра. КомпьютерПресс №2. -2005
3
Стандарт WSDL
Ю
Пример Web службы
У
р
Г
У
МехМат
С
П
21

Простой пример Web службы (Java)
public class MyMath
{
public int squared(int x)
{
return x * x;
}
}
Barry Wilkinson, Grid Computing Cource Slides, University of North Carolina
Ю
У
Элементы WSDL-документа
22
Блок types – типы данных, используемые
Web-службой

Блок message – сообщения, используемые
Web-службой

Блок portType – методы, предоставляемые
Web-службой

Блок binding – протоколы связи,
используемые Web-службой

р
Г
МехМат
С
П
У
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://DefaultNamespace"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:impl="http://DefaultNamespace"
xmlns:intf="http://DefaultNamespace"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:message name="squaredRequest">
<wsdl:part name="in0" type="xsd:int"/>
</wsdl:message>
<wsdl:message name="squaredResponse">
<wsdl:part name="squaredReturn" type="xsd:int"/>
</wsdl:message>
<wsdl:portType name="MyMath">
<wsdl:operation name="squared" parameterOrder="in0">
<wsdl:input message="impl:squaredRequest" name="squaredRequest"/>
<wsdl:output message="impl:squaredResponse" name="squaredResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="MyMathSoapBinding" type="impl:MyMath">
<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/ soap/http"/>
<wsdl:operation name="squared">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="squaredRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/ encoding/"
namespace="http://DefaultNamespace" use="encoded"/>
</wsdl:input>
<wsdl:output name="squaredResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/ encoding/"
namespace="http://DefaultNamespace" use="encoded"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="MyMathService">
<wsdl:port binding="impl:MyMathSoapBinding" name="MyMath">
<wsdlsoap:address location="http://localhost:8080/axis/testaccount/ MyMath"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Namespaces
messages - cообщения
portTypes - методы
binding - связи
Определение службы
23
Barry Wilkinson, Grid Computing Cource Slides, University of North Carolina
Ю
Порты WSDL <portType>
У
р
МехМат
С
24



Элемент <portType> является наиболее
важным элементом WSDL.
Он определяет саму Web-службу,
предоставляемые ей операции и используемые
сообщения.
Можно сравнить с библиотекой функций, в
которой указаны входные параметры и
результаты работы функции.
Г
П
У
Ю
Пример блока <portType>
25
<wsdl:portType name="MyMath">
<wsdl:operation name="squared"
parameterOrder="in0">
<wsdl:input message="impl:squaredRequest“
name="squaredRequest"/>
<wsdl:output message="impl:squaredResponse“
name="squaredResponse"/>
</wsdl:operation>
</wsdl:portType>
У
р
Г
МехМат
С
П
У
Ю
Сообщения WSDL <message>
У
р
МехМат
С
26


Г
Элемент <message> определяет элементы
данных операции.
Каждое сообщение может содержать одну или
несколько частей. Эти части можно сравнить с
параметрами вызываемых функций в
традиционных языках программирования.
П
У
Ю
Пример блока <message>
У
р
МехМат
С
27
<wsdl:message name="squaredRequest">
<wsdl:part name="in0" type="xsd:int"/>
</wsdl:message>
<wsdl:message name="squaredResponse">
<wsdl:part name="squaredReturn" type="xsd:int"/>
</wsdl:message>
Г
П
У
Ю
Связи WSDL <binding>
28


Элемент <binding> определяет формат
сообщения и детали протокола для каждого
порта.
Отвечает за то, каким образом элементы
абстрактного интерфейса в блоке <portType>
преобразуются в массивы информации в
формате протоколов взаимодействия,
например SOAP.
У
р
Г
МехМат
С
П
У
Ю
Пример блока <binding>
29
<wsdl:binding name="MyMathSoapBinding" type="impl:MyMath">
<wsdlsoap:binding style="rpc"
transport="http://schemas.xmlsoap.org/ soap/http"/>
<wsdl:operation name="squared">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="squaredRequest">
<wsdlsoap:body
encodingStyle="http://schemas.xmlsoap.org/soap/ encoding/"
namespace="http://DefaultNamespace" use="encoded"/>
</wsdl:input>
<wsdl:output name="squaredResponse">
<wsdlsoap:body
encodingStyle="http://schemas.xmlsoap.org/soap/ encoding/"
namespace="http://DefaultNamespace" use="encoded"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
У
р
Г
МехМат
С
П
У
Ю
Блоки <port> и <service>
30



Данные блоки определяют, где находится
служба.
port – описывает расположение и способ
доступа к конечной точке
service – именованная коллекция портов
У
р
Г
МехМат
С
П
У
Ю
Пример блока <service>
У
р
Г
У
МехМат
С
П
31
<wsdl:service name="MyMathService">
<wsdl:port binding="impl:MyMathSoapBinding“
name="MyMath">
<wsdlsoap:address
location="http://localhost:8080/axis/myaccount/MyMath"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
4
Стандарт SOAP
Ю
Сообщение SOAP
У
р
МехМат
С
33


Сообщением SOAP называют одностороннюю
передачу информации между узлами SOAP: от
источника к приемнику.
Сообщения SOAP являются фундаментальным
строительным блоком, обеспечивающим
возможности более сложных шаблонов
взаимодействия:
 Запрос/ответ
 «диалоговый» режим
и
т.п.
Г
П
У
Ю
У
р
Г
У
МехМат
Архитектура SOAP
С
П
34
URL Конечной точки
SOAP
Proxy
SOAP
Сообщения
SOAP
Запрос
Транслятор
Локальный
протокол
RPC
HTTP
Internet
Клиент
Ответ
XML
парсер
XML
парсер
Web Server
Сервер
приложений
Ю
Элементы сообщения SOAP
35



Envelope (конверт) –
корневой элемент
сообщения.
Header (заголовок) – не
обязательный элемент
сообщения. Может
содержать дополнительную
информацию для
приложения,
обрабатывающего запрос.
Body (Тело) – обязательный
элемент сообщения.
Содержит вызовы
необходимых методов и
передаваемые параметры.
У
р
Г
МехМат
С
П
У
Ю
Шаблон сообщения SOAP
У
р
Г
МехМат
С
П
36
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap=http://www.w3.org/2001/12/soap-envelope
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header>
...
...
</soap:Header>
<soap:Body>
...
...
<soap:Fault>
...
...
</soap:Fault>
</soap:Body>
</soap:Envelope>
W3C schools website (http://www.w3schools.com)
У
Ю
Пример заголовка SOAP
У
р
Г
МехМат
С
П
37


В заголовке мы можем
ввести новый элемент, не
предусмотренный
стандартом SOAP.
Например, номер
транзакции.
Атрибуты:


mustUnderstand –
получатель обязан
обрабатывать этот элемент;
actor – указывает
конкретное приложениеполучатель при обработке
сообщения в цепочке.
<soap:Header>
<trans:Transaction
xmlns:trans="http:
//www.host.com/namespaces/space/"
soap:mustUnderstand=“1”>
12
</trans:Transaction>
</soap:Header>
У
Ю
Тело сообщения SOAP
38
Запрос
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getProductDetails xmlns="http://warehouse.example.com/ws">
<productID>12345</productID>
</getProductDetails>
</soap:Body>
</soap:Envelope>
Ответ
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getProductDetailsResponse xmlns="http://warehouse.example.com/ws">
<getProductDetailsResult>
<productID>12345</productID>
<productName>Стакан граненый</productName>
<description>Стакан граненый. 200 мл.</description>
<price>9.95</price>
<inStock>true</inStock>
</getProductDetailsResult>
</getProductDetailsResponse>
</soap:Body>
</soap:Envelope>
У
р
Г
МехМат
С
П
У
Ю
Связывание SOAP и HTTP
39


Передача SOAP
сообщений
происходит поверх
HTTP – протокола
посредством запроса
POST (начиная со
стандарта SOAP 1.2
возможно
применение GET)
Стандартный протокол
связи:
Клиент посылает
запрос
 Сервер отвечает OK

POST /InStock HTTP/1.1
Host: www.stock.org
Content-Type:
application/soap+xml;
charset=utf-8
Content-Length: nnn
…
HTTP/1.1 200 OK
Content-Type:
application/soap;
charset=utf-8
Content-Length: nnn
…
У
р
Г
МехМат
С
П
У
Ю
Ссылки и литература
У
р
МехМат
С
40



Borja Sotomayor. The Globus Toolkit 4 Programmer’s
Tutorial. November 2005.
http://gdp.globus.org/gt4tutorial/download/progtutorial-pdf_0.2.1.tar.gz
Ian Foster et al. Моделирование ресурсов с
состоянием посредством Web-служб
http://www.gridclub.ru/library/publication.2005-0425.6831747572/view
Thomas Erl. Service-Oriented Architecture: Concepts,
Technology, and Design. Prentice Hall PTR. -2005
Г
П
У
Спасибо за внимание!
Ваши вопросы?
Страница курса:
http://dom.susu.ru/grid.htm
Радченко Глеб Игоревич, каф. СП, ЮУрГУ
Download