Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
208
Добавлен:
17.04.2018
Размер:
1.72 Mб
Скачать

Интернет-программирование

МИЭТ, 2017

Лекция 14

Работа с удаленными объектами. SOAP

ИП. SOAP

МИЭТ, 2017

SOAP

( Simple Object Access Protocol — простой протокол доступа к объектам )

Стандартизирован W3C - https://www.w3.org/TR/soap/ Первая редакция стандарта — 1998 г.

Последняя редакция стандарта (v1.2) — 2007 г.

Предназначен для обмена структурированными (в основном XML) сообщениями (объектами) между узлами распределенной сети компьютеров без какого-либо прямого использования внутреннего устройстве языка программирования, исполняющего запрос.

Для организации обмена на стороне сервера развертывается веб-сервис, имеющий публичное описание API, который осуществляет трансляцию запросов по протоколу SOAP к исполняющему коду и обратную трансляцию результатов клиенту по протоколу SOAP

ИП. SOAP. История.

МИЭТ, 2017

 

Авторы идеи

Давид Виннер

Дон Бокс

Dave Winer

Don Box

Участвовал в разработке:

Участвовал в разработке:

SOAP, Xbox SmartGlass

SOAP, RSS, OPML

platform

 

А еще: Bob Atkinson и Mohsen Al-Ghosein

ИП. SOAP. Идея

МИЭТ, 2017

Создание кода клиента по описанию методов

Сервер Универсальное

Клиент

 

описание

 

 

методов на XML

SOAP

Код

 

 

 

 

компонен

вызова

Реализация

SOAP

т

методов

компонен

 

 

методов

т

 

 

 

Работа клиента с сервером

 

Сервер

Универсально

Клиент

 

 

е

XML-

 

 

описание

 

 

методов

документы

 

 

SOAP

SOAP

Код

Реализация

компонен

вызова

компонен

т

методов

методов

т

SOAP поверх прикладного

 

 

 

протокола, например HTTP

 

 

 

- как правило — готовая библиотека

 

ИП. SOAP. Структура

МИЭТ, 2017

Универсальное описание методов на XML = язык WSDL XML документы поверх протоколов «носителей» = SOAP

SOAP — оболочка

SOAP Envelope

Заголовок SOAP

SOAP Header

Блок naming

Тело SOAP

SOAP Body

Элемент result

Структура SOAP сообщений

<?xml version='1.0' ?>

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">

<!-- Определение пространств имен, влияющих на обработку Body -->

<env:Header>

<m:vuz xmlns:m="http://miet.ru/naming"> <m:name>MIET</m:name>

</m:vuz>

</env:Header>

<!-- Данные для обработки -->

<env:Body>

<с:result xmlns:с="http://miet.ru/calculate"> <с:Summ>5467347</q:Summ>

</с:result>

</env:Body>

</env:Envelope>

ИП. SOAP. WSDL

МИЭТ, 2017

Поскольку связывающиеся узлы клиента и сервера могут быть реализованы на разных языках программирования требуется описание того:

Где на сервере находится файл-обработчик SOAP (веб-сервис)

Какие методы реализованы

Какие данные эти методы принимают

Какие данные возвращаются

Это описывается в специальном текстовом WSDL файле имеющем XML структуру

WSDL

(Web Services Description Language)

Стандартизирован W3C - https://www.w3.org/TR/wsdl20/ Первая редакция стандарта — 2000 г.

Последняя редакция стандарта (v2.0) — 2007 г.

ИП. SOAP. Структура WSDL

МИЭТ, 2017

definition

types

message

operation

<!-- корневой элемент WSDL --> <definitions>

<types>

<!-- описание типов данных, которые будут передаваться по SOAP --> </types>

<message>

<!-- ассоциация передаваемых данных с именами сообщений --> </message>

<portType>

<operation>

<!-- описываются доступные операции (методы) --> </operation>

</portType>

binding

<binding>

<!-- операции (методы) связываются с транспортным протоколом -->

 

</binding>

 

<service>

service

<!-- описывается URL по которому нужно искать веб-сервис -->

 

</service>

 

</definitions>

ИП. SOAP. Пример веб-сервиса

МИЭТ, 2017

Поскольку документы SOAP и WSDL текстовые XML документы, то реализация взаимодействия по протоколу может быть построена для любого языка программирования.

Рассмотрим пример построения SOAP-клиента и сервера на языке PHP, для которого не существует поддержки технологии CORBA.

Пример по сути будет аналогичен примеру, рассмотренному для техноолгий RMI и CORBA и будет заключаться в вызове удаленного метода makeCalculate, рассчитывающего сумму элементов из списка (массива) внутри объекта BigData и возвращающего результат внутри объекта Result

ИП. SOAP. Пример веб-сервиса. Архитектура

МИЭТ, 2017

Домен сервера: bitrixtest.ru

WSDL- описание веб-сервиса

файл - /wsdl/makeCalculateMiet.wsdl

Сервер

SOAP

файл - /makecalculateservices.php

Класс makeCalculateImpl

реализующий метод makeCalculate

Клиент

формирует объект BigData читает WSDL

вызывает метод makeCalculate(BigData) получает из него объект Result

файл - /client.php

файл - /classes/makecalculateimpl.php

ИП. SOAP. Пример веб-сервиса. WSDL. definition

МИЭТ, 2017.

<?xml version="1.0" encoding="utf-8"?>

<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"

xmlns="http://schemas.xmlsoap.org/wsdl/"

name="makeCalculateService" xmlns:tns="http://bitrixtest.ru/" targetNamespace="http://bitrixtest.ru/"

>

Соседние файлы в папке Интернет технологии