
- •Интернет-программирование
- •ИП. SOAP
- •ИП. SOAP. История.
- •ИП. SOAP. Идея
- •ИП. SOAP. Структура
- •ИП. SOAP. WSDL
- •ИП. SOAP. Структура WSDL
- •ИП. SOAP. Пример веб-сервиса
- •ИП. SOAP. Пример веб-сервиса. Архитектура
- •ИП. SOAP. Пример веб-сервиса. WSDL. definition
- •ИП. SOAP. Пример веб-сервиса. WSDL. types
- •ИП. SOAP. Пример веб-сервиса. WSDL. message
- •ИП. SOAP. Пример веб-сервиса. WSDL. Привязка метода
- •ИП. SOAP. Пример веб-сервиса. WSDL. binding
- •ИП. SOAP. Пример веб-сервиса. WSDL. service
- •ИП. SOAP. Пример веб-сервиса. Класс makeCalculateImpl
- •ИП. SOAP. Пример веб-сервиса. Сервер
- •ИП. SOAP. Пример веб-сервиса. Клиент
- •ИП. SOAP. Пример веб-сервиса. Результат работы
- •ИП. SOAP. Пример веб-сервиса. Клиент на Java
- •ИП. SOAP. Пример веб-сервиса. Клиент на Java
- •ИП. SOAP. Преимущества и недостатки
- •ИП. Java. Сборки
- •ИП. Java. Сборки
- •ИП. Java. Сборки
- •ИП. Java. Сборки. Пример файла сборки ant — build.xml
- •ИП. Java. Сборки. Пример файла сборки ant — build.xml
- •ИП. Java. Сборки. Ant. Тег ant.
- •ИП. Java. Сборки. Ant. Тег antcall.
- •ИП. Java. Сборки. Ant. Тег copy.
- •ИП. Java. Сборки. Ant. Коллекции ресурсов.
- •ИП. Java. Сборки. Ant. Тег fieldset.
- •ИП. Java. Сборки. Ant. Тег dirset.
- •ИП. Java. Сборки. Ant. Тег fiellist.
- •ИП. Java. Сборки. Ant. Тег delete.
- •ИП. Java. Сборки. Ant. Тег property.
- •ИП. Java. Сборки. Ant. Тег javac.
- •ИП. Java. Сборки. Ant. Тег jar.
- •ИП. Java. Сборки. Выполнение сборки из IDE
- •ИП. Java. Сборки. Выполнение сборки из IDE
- •ИП. Java. Сборки. Выполнение сборки из IDE
Интернет-программирование |
МИЭТ, 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/"
>