Введение
Web Services – новая технология для развертывания распределенных вычислительных систем. Основная причина ее появления – неспособность существующих технологий, таких как объектные системы типа COM семейства Microsoft и стандарты OMG CORBA, в полной мере обеспечить совместимость (интероперабельность) различных программных продуктов для неоднородных распределенных систем. Требование совместимости – один из главных рычагов давления все стремительно развивающегося рынка электронного бизнеса, основу которого составляют многочисленные разнотипные как поставщики вычислительных услуг, так и их потребители. Технология Web Services предложена и развивается под эгидой WWW-консорциума W3C [1] ведущих компаний-производителей программного обеспечения.
Основу ее составляют:
Технологии услуг сети
SOAP и WSDL применялись и ранее (Userland, Microsoft, Developmentor) вне W3C; их спецификации были использованы для Web Services как основание для создания расширяемой структуры управления сообщениями (messaging) SOAP 1.2 и языка определений интерфейсов WSDL 1.2.Можно дать определение Web Services (или Web-служб) как набора услуг в виде программных приложений, идентифицированного сетевым адресом URI (Uniform Ressourse Identifier), интерфейсы и связывания (binding) которого определяются XML-средствами. Web-службы обеспечивают прямые взаимодействия через Интернет с другими агентами программного обеспечения, используя сообщения, основанные также на XML-формате. Данное определение Web-служб не предполагает использование SOAP в качестве формата или модели обработки сообщений. И при этом оно не предполагает также использование WSDL как языка описаний обслуживания. В настоящее время существуют (и будет появляться) множество услуг сети, которые используют уровень HTTP в качестве протокола передачи данных и некоторые взаимосогласованные XML-форматы содержания сообщения (контента). Однако, в W3C предполагают, что более высокие уровни стека протокола Web-служб должны строиться на основе SOAP и WSDL.
Консорциум W3C вырабатывает рекомендации, являющиеся стандартом для спецификаций и протоколов Web-служб; согласно этим рекомендациям различные компании-производители программного обеспечения разрабатывают собственные реализации этих технологий. Вот некоторые из них: SOAP Toolkit (Microsoft), WebSphere Application Server (IBM), JWSDP (Sun). Одним из замечательных достижений технологии Web-служб является совместимость всех их реализаций, независящая от поставщиков (провайдеров) вычислительных услуг и производящих их технологий. Основу этой совместимости является последовательное применение на всех уровнях предоставления услуг Web-служб стандартов XML-технологии. Так например, формат SOAP-сообщений – основной единицы передачи данных - представлен в виде XML-документа; описание интерфейса вычислительного сервиса в WSDL также представляется в XML-формате.
Архитектура
Web-службВ архитектуре
Web-служб рассматириваются две ее составные части: базовая (Basic Architecture) и расширенная (Extended Web Services Architecture) архитектура. Базовая архитектура включает в себя стандартный (обязательный) набор средств этой технологии, уже нашедший применение в различных реализациях Web-служб; расширенная архитектура в большей части ориентирована на дополнительные или перспективные спецификации, расширяющие возможности технологии, такие как:Базовая архитектура
Базовая архитектура включает следующие технологии
Web-служб:Базовая архитектура
Web-служб определяет взаимодействие между агентами программного обеспечения как обмена сообщениями между запрашивающими сервис (requesters) и поставщиками услуг (provider - провайдерами). Requesters - агенты программного обеспечения, которые запрашивают выполнение сервиса, провайдеры - агенты программного обеспечения, которые обеспечивают выполнение сервиса. Каждый из агентов может быть одновременно и запрашивающим и провайдером. Провайдеры ответствены за реализацию сервиса и публикацию его описания, запрашивающие - должны иметь способ поиска описания услуг. Итак, базовая архитектура Web-служб проявляется в выполнении трех ролей: провайдера сервиса, агенства регистрации и поиска сервиса и клиента, запрашивающего сервис. Взаимодействие включает операции декларации (публикации), поиска и связывания (bind) сервиса. Эти роли и операции являются для Web-служб артифактами (artifacts): модулями программного обеспечения и их описаниями. В типичном сценарии Web-служб провайдер сервиса содержит программные модули с сетевым доступом, реализующие сервис, он же формирует описание сервиса и его декларацию (публикацию), доступную клиенту-потребителю или агенству регистрации (service discovery agency).Клиент-потребитель выполняет операции поиска для получения описания сервиса локально или через регистрационное агентство и, используя это описание, выполняет процедуру связывания с провайдером сервиса, инициирует взаимодействие с модулями, реализующими данный сервис.
На рисунке 1 изображена схема взаимодействия провайдера сервиса, регистрационного агентства и клиента-потребителя сервиса.
Как выше уже отмечалось, основной единицей обмена в технологии
Web-служб являются сообщения, имеющие структуру XML-документа. Описания сервиса используют также XML-нотацию, содержащую все необходимые детали для взаимодействия в сети, включая описание форматов сообщения, транспортных протоколов и его локализацию. Иначе говоря, формирование и транспортировка XML-сообщений подчиняются правилам и спецификациям SOAP-протокола; провайдер публикует WSDL-файл, содержащий описание семантики и синтаксиса сообщения, конечного адреса сервиса (endpoint), дающего возможность клиенту-потребителю правильно сгенерировать SOAP-сообщение и отправить его в правильном направлении. Сервис-провайдер получает это сообщение, обрабатывет содержащий в нем запрос и отсылает результат клиенту также в виде SOAP-сообщения. Технология, типичная для такого типа взаимодействия Web-служб, включает SOAP, WSDL и HTTP.
Рис. 1. Схема взаимодействия провайдера сервиса, регистрационного агентства и клиента-потребителя сервиса.
SOAP, Simple Object Access Protocol [2,3]
SOAP - достаточно простой, основанный на XML-механизме, способ создания структурированных пакетов данных для обменов между сетевыми приложениями. SOAP содержит четыре основные компоненты:
WSDL, Web Services Definition Language [4]
И отправитель, и приемник SOAP-сообщения должны иметь доступ к одному и тому же описанию сервиса. Отправитель нуждается в описании сервиса, чтобы знать, как правильно форматировать сообщение, а приемник - для правильной его интерпретации. Файл WSDL формируется в формате XML-документа самим отправителем или провайдером сервиса и содержит всю необходимую для потенциальных потребителей сервиса информацию в формализованном виде. Иными словами, знание сетевого адреса WSDL-файла в Интернете, является достаточной основой для понимания и правильного построения запросов от клиента-потребителя сервиса.
Определения Web-сервиса в WSDL могут транслироваться (отображаться) на многие языки, применяемые для реализаций Web-служб: Java, C++, Cobol и др.
Описание сервисов представляет собой XML-документ, состоящий из нескольких элементов, в том числе из описания пространства имен (namespace), описания типов и элементов сообщений, порта, а также возможных операций (для RPC) — запросов и ответов. WSDL-файл, содержащий описание сервисов, является достаточно сложным документом, поэтому для его создания и анализа, как правило, пользуются автоматическими генераторами, включенными в состав средств разработки.
Service discovery agency (
регистрационное агенство)Выше уже упоминалось об использовании не являющейся необходимой компоненты
Web-служб, так называемого регистрационного агенства или репозитария сервиса. В репозитарий направляется (публикуется) провайдером сервиса в том или ином формате (свободном или формализованном виде) информация об этих услугах. Клиент-потребитель услуг по различным критериям может обнаруживать и исследовать их качество и количество и, после выполнения процедуры связывания (binding), непосредственно обращаться к поставщику для выполнения декларированного сервиса. Для поиска и анализа сервиса необязательно иметь вышеописанную службу. Вся необходимая информация для подключения к сервису может передаваться провайдером потребителю конфиденциальным путем в виде записок, на дискетах, либо используя сетевые средства обмена данными типа FTP или WWW [5,6] и т. д. Консорциум W3C не занимается выработкой рекомендаций (стандартов) для информационного обслуживани поставщиков (провайдеров) сервисов. Для этого существуют уже зарекомендовавшие себя в электронном бизнесе системы типа ebXML или UDDI.Отметим ряд реализаций регистрационных служб:
1. UDDI (Universal Description, Discovery and Integration) [7] представляет собой средство регистрации вычислительных или коммерческих услуг в формализованном XML-формате. UDDI можно рассматривать как логическую структуру, имеющую общепринятую стандартную классификацию:
UDDI предоставляет свои услуги также в формате Web-служб, и к нему можно обращаться за полученим сервиса стандартными средствами, напрмер SOAP-сообщениями. Ниже приводится фрагмент программы pingUDDI.java, с подготовкой SOAP-запроса с задаваемым ключевым словом в переменной keyWord:
. . . . . . . . . . . . . . . . . . . . . . . . . .
String keyWord = “Microsoft”;
// Create the connection and the message factory
SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance();
SOAPConnection connection = scf.createConnection();
MessageFactory msgFactory = MessageFactory.newInstance();
// Create a message
SOAPMessage msg = msgFactory.createMessage();
// Get the envelope from the message's SOAP part
SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();
// Get the SOAP body from the envelope
SOAPBody body = envelope.getBody();
SOAPBodyElement findBusiness = body.addBodyElement(envelope.
createName("find_business", "", "urn:uddi-org:api"));
findBusiness.addAttribute(envelope.createName("generic"), "1.0");
findBusiness.addAttribute(envelope.createName("maxRows"), "100");
SOAPElement businessName = findBusiness.addChildElement(
envelope.createName("name"));
businessName.addTextNode(keyWord);
URLEndpoint endpoint
= new URLEndpoint(System.getProperties().getProperty("URL"));
msg.saveChanges();
SOAPMessage reply = connection.call(msg, endpoint);
System.out.println("Received reply from: " + endpoint);
reply.writeTo(System.out);
. . . . . . . . . . . . . . . . . . . . . .
Существует ряд открытых для пользователей UDDI-серверов, как промышленного использования (UBR, UDDI Business Registry), так и для исследовательских целей (тестирования):
2. ebXML [8], в основном предназначеный для электронного бизнеса, также предоставляет средства регистрации, поиска и анализа сервисных услуг в форматах CPP (Collaboration-Protocol Profile) и CPA (Collaboration-Protocol Agreement) в XML-представлениях. В отличие от UDDI, где информация строго структурирована и формализована, т.е. содержит только метаданные о сервисе, ebXML допускает включение в регистрацию кроме метаданных и дополнительную информацию произвольной структуры. Простой пример: файл WSDL, столь необходимый для клиента-потребителя сервиса, не может включаться непосредственно в UDDI-описания (здесь возможна лишь ссылка на этот файл на стороне провайдера услуг), ebXML допускает включение в регистрацию любых технических деталей, касающихся декларируемого сервиса.
3. JAXR (Java API for XML Registries) [9] – является составной частью свободно распространяемого пакета JWSDP компании Sun, в котором реализована поддержка Web-служб. Надо подчеркнуть особенности этой службы регистрации:

Рис. 3. Архитектура верхнего уровня
JAXR.Структура
SOAP-сообщенийОбмен данными между клиентом-потребителем и провайдером – поставщиком услуг –это передача
SOAP-сообщений. Протокол SOAP предлагает способ формирования сообщений в XML-формате, основанный на объектной модели XML-документа DOM (Document Object Model). SOAP-сообщения – это иерархическая структура вложенных XML-элементов (или узлов): SOAPMessage, SOAPPart, SOAPEnvelope, SOAPHeader, SOAPBody и содержимое передаваемого сообщения, также в формате XML (XML content). На рисунке. 4 представлена иерархическая структура SOAP-сообщения.Типы взаимодействия в
Web-службахРазработчики серверной и клиентской частей
Web-служб могут использовать два типа предоставления и потребления вычислительных услуг, внешне принципиально разных:
Рис. 4. Иерархическая структура
SOAP-сообщения.Передача
SOAP-сообщенийСообщения могут передаваться в синхронном или асинхронном режиме. В синхронном режиме (
request-response messaging) передающий процесс блокируется на время ожидания ответа, который также должен соответствовать SOAP-стандарту. В асинхронном режиме (one-way messaging) для передач сообщений используются посредники (провайдеры). На время обменов передающий процесс не блокируется, но время возврата результата – непредсказуемо. Управление типами сообщений выполняется выбором соединения клиента и провайдера (объектовSOAPConnection или ProviderConnection). Для передачи синхронных сообщений используется метод call() объекта SOAPConnection, параметром которого является структура, представляющая объектную модель SOAP-сообщения, а результатом выполнения запроса – также SOAP-сообщение в формате DOM. Для передачи асинхронных запросов используется объект ProviderConnection и его метод send().
В приведенном выше фрагменте программы для обращения к UDDI-серверу показана типичная последовательность выполнения SOAP-запроса, вот некоторые из операций:
Выполнение соединения:
SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance();
SOAPConnection connection = scf.createConnection();
Создание объекта для
SOAP-сообщения:SOAPMessage msg = msgFactory.createMessage();
SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();
Создание объекта
“элемент” для размещения содержимого запросаSOAPBody body = envelope.getBody();
Затем выполняется последовательность операторов для создания запроса в виде
XML-объекта, который включается в элемент типа SOAPBody.Обращение к методу
call для передачи SOAP-сообщения msgSOAPMessage reply = connection.call(msg, endpoint);
Распечатка принятого результата
reply.writeTo(System.out);
Удаленный вызов процедур,
RPCРежим RPC во многом напоминает технологии обмена данными, используемые в объектных распределенных системах типа RMI и OMG CORBA. Основные моменты развертывания RPC:
Надо отметить два существенных момента использования
RPC:
На рисунке 5 представлена диаграмма прохождения и конвертирования
RPC-запросов.Заключение
Web Services – относительно новая технология для распределенных вычислительных сред. Основная ее особенность – это объединение в рамках WWW-консорциума многих крупных, иногда антогонистических, фирм-производителей, для разрешения важнейшей и противоречивой проблемы совместимости различных конкурирующих технологий интеграции неоднородных компьютерных систем, использующих одну и ту же идеологию объектной ориентации. Основой обеспечения такой совместимости является последовательное
применение на всех уровнях предложенной технологии XML-представления структур данных, форматов передаваемых сообщений, интерфейсов взаимодействия распределенных компонент. С другой стороны, основные компоненты и протоколы Web Services – это уже зарекоменовавшие себя в других областях применения технологии: SOAP, WSDL, UDDI, ebXML и HTTP/SMTP. В немалой степени это сближение позиций фирм-производителей является следствием давления рынка электронного бизнеса.
Надо отметить также и то обстоятельство, что существует стремление использовать предложенную Web Services совместимость и для решения так называемых “решеточных” задач или GRID-технологий [11], получивших, в частности, широкое применение в задачах физики высоких энергий [12].

Рис. 5. Диаграмма преобразований
RPC-вызовов в SOAP-сообщения.Литература