Ю У р Г У МехМат С П Грид технологии Лекция 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 Радченко Глеб Игоревич, каф. СП, ЮУрГУ