Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций 4.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
889.86 Кб
Скачать

Тема 13. Сервисно-ориетированные архитектуры

13.1. Web – сервисы

13.1.1. Стандарт Web - сервисов

Веб-служба, веб-сервис (англ. web service) — программная система, идентифицируемая строкой URI, чьи публичные интерфейсы и привязки определены и описаны языком XML. Описание этой программной системы может быть найдено другими программными системами, которые могут взаимодействовать с ней согласно этому описанию посредством сообщений, основанных на XML, и передаваемых с помощью интернет-протоколов.

Стандарты:

  • XML: Расширяемый язык разметки, предназначенный для хранения и передачи структурированных данных;

  • SOAP: Протокол обмена сообщениями на базе XML;

  • WSDL: Язык описания внешних интерфейсов веб-службы на базе XML;

  • UDDI: Универсальный интерфейс распознавания описания и интеграции (Universal Discovery, Description, and Integration). Каталог веб-служб и сведений о компаниях, предоставляющих веб-службы во всеобщее пользование или конкретным компаниям.

Рис. 1. Веб-служба.

Рисунок 2. Стек технологий архитектуры веб-сервисов

Достоинства web – служб.

  • Веб-службы обеспечивают взаимодействие программных систем независимо от платформы

  • Веб-службы основаны на базе открытых стандартов и протоколов. Благодаря использованию XML достигается простота разработки и отладки веб-служб

  • Использование интернет-протокола HTTP обеспечивает взаимодействие программных систем через межсетевой экран

Недостатки web – служб.

Меньшая производительность и больший размер сетевого трафика по сравнению с технологиями RMI, CORBA, DCOM за счет использования текстовых XML-сообщений.

  • Использование SOAP для передачи сообщений увеличивает их объём и снижает скорость обработки. В системах, где скорость важна, чаще используется пересылка XML документов через HTTP напрямую, где параметры запроса передаются как обычные HTTP параметры.

  • Хотя SOAP является стандартом, различные программы часто генерируют сообщения в несовместимом формате. Например, запрос сгенерированный AXIS-клиентом, не будет понят сервером WebLogic.

Наиболее распространенными бесплатными пакетами для реализации Web – сервисов являются:

Apache Axis

Инструментальный пакет для разработки веб-сервисов

SOAP, WSDL, SAX, JMS

Совместимая с GPL (General Public License) Apache License

Кроссплат- форменное приложение

Пакет включает в себя SAX-парсер, средство генерации Java-классов по WSDL-описаниям, монитор TCP/IP-пакетов, а также примеры и сопроводительную документацию.

Apache XML-RPC

Java-реализация XML-RPC для оформления RPC с помощью XML поверх HTTP

XML, XML-RPC, Java

Совместимая с GPL (General Public License) Apache License

Кроссплат- форменное приложение

Реализует еще не принятые W3C рекомендации DOM3 и Xinclude.

13.1.2. Взаимодействие Web-служб

Описание интерфейса

Языком описания интерфейса Web-служб служит WSDL (читается "виздэл") — Web Services Description Language, язык описания Web-служб [23]. Этот язык служит аналогом (и некоторым обобщением) языков описания интерфейсов (IDL), используемых при реализации удаленных вызовов процедур и методов. В настоящее время используется версия WSDL 1.1, но в 2006 году выйдет версия 2.0, в которой достаточно много новых элементов.

WSDL (англ. Web Services Description Language) — язык описания веб-сервисов, который основан на языке XML.

Последняя официальная спецификация на момент написания статьи версия 2.0 (WSDL Version 2.0 от 27 марта 2006 года), которая имеет статус кандидата рекомендации и версия 1.1 (WSDL Version 1.1 от 15 марта 2001 года), которая имеет статус рекомендации.

Описание интерфейса работы с Web-службой на WSDL состоит из двух частей — абстрактной и конкретной. Абстрактная часть описания содержит определения типов данных, используемых в обращениях к данной службе и определения абстрактных операций, которые можно "вызвать" у службы. Напомним, что все такие "вызовы" являются асинхронными обращениями. Конкретная часть содержит описание привязки операций к определенным адресам, протоколам доступа и портам.

Типы данных описываются внутри тега <types>. Они могут основываться на встроенных XML-типах и использовать XML Schema для описания сложных структур данных.

С помощью тегов <message> описываются типы сообщений, которыми стороны могут обмениваться в ходе работы службы. Для сообщения указывается, является ли оно входящим или исходящим, а его структура описывается в терминах определенных ранее типов данных.

Далее определяются операции, которые могут включать в себя обмен сообщениями нескольких типов. Для операции указывается используемый в ее рамках шаблон обмена сообщениями. Примерами шаблонов являются: однократное уведомление со стороны службы, запрос со стороны клиента, запрос-ответ. Всего в WSDL 1.1 есть 4 вида шаблонов (в WSDL 2.0 — уже 9 видов):

Операции группируются в интерфейсы, которые в WSDL 1.1 названы типами портов (port types).

С помощью элемента <binding> определяется привязка интерфейсов к их реализациям. Она задает конкретные форматы сообщений и протоколы их посылки/получения для некоторого интерфейса. Один интерфейс может иметь несколько привязок.

Элемент <port> определяет порт, задающий конкретные адрес и порт некоторой привязки, а также, возможно, транспортный протокол для передачи сообщений на этот адрес.

Наконец, элемент <service> описывает службу целиком, указывая набор портов для доступа к различным ее интерфейсам.

Связь

Связь между Web-службами и их клиентами осуществляется по протоколу SOAP (Simple Object Access Protocol, простой протокол доступа к объектам) [24]. Протокол SOAP является протоколом уровня представления по модели OSI, т.е. он определяет формат сообщений, которые пересылаются с помощью некоторого транспортного протокола, в качестве которого обычно используются HTTP, HTTPS, TCP, иногда SMTP.

Формат сообщений SOAP основан на XML. SOAP-сообщение состоит из следующих частей.

Конверт (envelope) — содержит сообщение целиком.

Заголовок (header) — содержит значения некоторых дополнительных атрибутов сообщения, используемых при его обработке или переадресации. Заголовок может отсутствовать и используется обычно для передачи информации о координации нескольких сообщений, идентификации сеансов и передачи разного рода сертификатов для защиты информации.

Тело (body) — основное содержимое сообщения, должно относится к одному из типов сообщений, которыми можно обмениваться с данной службой согласно описанию ее интерфейса. Должно быть в любом сообщении.

SOAP.

SOAP — протокол обмена структурированными сообщениями в распределённой вычислительной среде. Первоначально SOAP предназначался, в основном, для реализации удалённого вызова процедур (RPC), а название было аббревиатурой: Simple Object Access Protocol — простой протокол доступа к объектам. Сейчас протокол используется для обмена произвольными сообщениями в формате XML, а не только для вызова процедур. Официальная спецификация последней версии 1.2 протокола никак не расшифровывает название SOAP. SOAP является расширением языка XML-RPC.

SOAP может использоваться с любым протоколом прикладного уровня: SMTP, FTP, HTTP и др. Однако его взаимодействие с каждым из этих протоколов имеет свои особенности, которые должны быть определены отдельно. Чаще всего SOAP используется поверх HTTP.

Сообщение SOAP выглядит так:

SOAP- конверт

SOAP-заголовок

Элемент заголовка 1

Элемент заголовка 2

...

Элемент заголовка N

Тело SOAP

Элемент тела 1

Элемент тела 2

...

Элемент тела N

Рис. 2 Объект SOAPMessage без вложений

Рис. 3 Объект SOAPMessage с двумя объектами AttachmentPart

Пример SOAP-запроса на сервер интернет-магазина:

<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>