
- •Введение
- •1 Тема 1. Введение в теорию вычислительных сетей
- •1.1 Общая классификация систем обработки данных
- •1.1.1 Сосредоточенные системы
- •1.1.2 Распределенные системы
- •1.1.3 Распределенные вычислительные сети
- •1.2 Сетевые объектные системы
- •1.2.1 Классические приложения модели OSI
- •1.2.2 Распределенная вычислительная среда (DCE)
- •1.2.3 Технология CORBA
- •1.2.4 Удаленный вызов методов
- •1.3 Сервис-ориентированные технологии
- •1.3.1 Функции и сервисы
- •1.3.2 Системы midlleware
- •1.3.3 Сервисные шины предприятий
- •1.4 Виртуальные системы
- •1.4.1 Виртуальные машины
- •1.4.2 Виртуализация вычислительных комплексов на уровне ОС
- •1.4.2 Виртуализация ПО на уровне языка
- •1.4.3 Виртуальная машина языка Java
- •1.5 Итоги теоретических построений
- •Вопросы для самопроверки
- •2 Тема 2. Инструментальные средства языка Java
- •2.1 Общее описание инструментальных средств языка
- •2.1.1 Инструментальные средства командной строки
- •2.1.2 Пакетная организация языка Java
- •2.1.3 Инструментальные средства Eclipse
- •2.2 Классы и простые типы данных
- •2.2.1 Операторы и простые типы данных
- •2.2.2 Синтаксис определения классов
- •2.2.3 Синтаксис и семантика методов
- •2.2.4 Синтаксис определения интерфейсов
- •2.2.5 Объекты и переменные
- •2.3 Управляющие операторы языка
- •2.4 Потоки ввода-вывода
- •2.4.1 Стандартный ввод-вывод
- •2.4.2 Классы потоков ввода
- •2.4.3 Классы потоков вывода
- •2.5 Управление сетевыми соединениями
- •2.5.1 Адресация на базе класса InetAddress
- •2.5.2 Адресация на базе URL и URLConnection
- •2.5.3 Сокеты протокола TCP
- •2.5.4 Сокеты протокола UDP
- •2.5.5 Простейшая задача технологии клиент-сервер
- •2.6 Организация доступа к базам данных
- •2.6.1 Инструментальные средства СУБД Apache Derby
- •2.6.2 SQL-запросы и драйверы баз данных
- •2.6.3 Типовой пример выборки данных
- •Вопросы для самопроверки
- •3 Тема 3. Объектные распределенные системы
- •3.1 Брокерные архитектуры
- •3.1.1 Вызов удаленных процедур
- •3.1.2 Использование удаленных объектов
- •3.2 Технология CORBA
- •3.2.1 Брокерная архитектура CORBA
- •3.2.2 Проект серверной части приложения NotePad
- •3.2.3 Проект клиентской части приложения Example12
- •3.2.4 Генерация распределенного объекта OrbPad
- •3.2.5 Реализация серверной части ORB-приложения
- •3.2.6 Реализация клиентской части ORB-приложения
- •3.3 Технология RMI
- •3.3.1 Интерфейсы удаленных объектов
- •3.3.2 Реализация RMI-сервера
- •3.3.3 Реализация RMI-клиента
- •Вопросы для самопроверки
- •4 Тема 4. Web-технологии распределенных систем
- •4.1 Общее описание технологии web
- •4.1.1 Унифицированный идентификатор ресурсов (URI)
- •4.1.2 Общее представление ресурсов (HTML)
- •4.1.3 Протокол передачи гипертекста (HTTP)
- •4.2 Модели «Клиент-сервер»
- •4.2.1 Распределение приложений по уровням
- •4.3 Технология Java-сервлетов
- •4.3.1 Классы Servlet и HttpServlet
- •4.3.2 Контейнер сервлетов Apache Tomcat
- •4.3.3 Диспетчер запросов - RequestDispatcher
- •4.3.4 Технология JSP-страниц
- •4.3.5 Модель MVC
- •Вопросы для самопроверки
- •5 Тема 5. Сервис-ориентированные архитектуры
- •5.1 Концепция SOA
- •5.1.1 Связывание распределенных программных систем
- •5.1.2 Web-сервисы первого и второго поколений
- •5.1.3 Брокерные архитектуры web-сервисов
- •5.2 Частные подходы к реализации сервисных технологий
- •5.2.1 Технологии одноранговых сетей
- •5.2.2 Технологии GRID
- •5.2.3 Облачные вычисления и «виртуализация»
- •Вопросы для самопроверки
- •Список использованных источников
- •Алфавитный указатель
199
5.1 Концепция SOA
Суммируя уже изученный материал подраздела 1.3, можно утверждать, что SOA или «Сервис-ориентированная архитектура» - это парадигма организации и использования распределенных возможностей приложений, которые принадлежат различным владельцам сервисов.
SOA — это парадигма, которая расширяет архитектуру объектных распределеных систем, выделяя модель независимого компонента. Этот компонент не обязан присутствовать на каждой стороне участников распределенного взаимодействия, как это должен делать класс, реализующий используемый удаленный объект.
Базовыми составляющими SOA, как модели, являются: сервисные компоненты (сервисы), интерфейсы сервисов, соединители сервисов и механизмы обнаружения сервисов.
Сервисные компоненты (или сервисы) описываются программными компонентами, которые обеспечивают прозрачную сетевую адресацию.
Интерфейс сервиса обеспечивает описание возможностей и качества предоставляемых сервисом услуг. В таком описании определяется формат сообщений, используемых для обмена информацией, а также входные и выходные параметры методов, поддерживаемых сервисным компонентом.
Соединитель сервисов — это транспорт, обеспечивающий обмен информацией между отдельными сервисными компонентами.
Механизмы обнаружения сервисов предназначены для поиска сервисных компонентов, обеспечивающих требуемую функциональность сервиса. Среди всего множества вариантов, обеспечивающих обнаружения сервисов, выделяются две основные категории: системы динамического и статического обнаружения.
Статические системы обнаружения сервисов, например UDDI, ориентированы на хранение информации о сервисах в редко изменяющихся системах.
Динамические системы обнаружения сервисов ориентированы на системы, в которых допустимо частое появление и исчезновение сервисных компонентов.
Исторически взаимодействие между поставщиками и потребителями сервисов основывались на протоколе SOAP [22], который, в свою очередь, опирается на язык XML [50]. Сам протокол SOAP считается независимым от языка и платформы, хотя само взаимодействие проходит путь XML->HTTP/HTML->TCP/IP. Такая ситуация привела к понятию «Веб-сервисы», которое и рассматривается в большинстве литературных источников. Такую интерпретацию будем использовать и мы, хотя сама теория не ограничивает базу реализации сервисов, допуская использование CORBA, RMI и другие технологии сетевого взаимодействия. В частности, большинство современных веб-сервисов для передачи своих сообщений используют протокол HTTP, поскольку он экономит трафик передачи данных по сравнению с простой передачей текста на языке XML.
200
5.1.1 Связывание распределенных программных систем
Одной их характеристик РВ-сетей является связанность ее сервисов. По этому признаку программные системы подразделяются на два типа: «Сильносвязанные системы» (Strong coupling) и «Слабосвязанные системы» (Loose coupling).
Сильная связанность возникает при использовании объектных распределенных сервисов, когда зависимый класс содержит ссылку на конкретный класс, предоставляющий сервис.
Слабая связанность возникает, когда зависимый класс содержит ссылку на интерфейс, который может быть реализован одним или многими различными классами.
Очевидно, что использования концепции слабосвязанных программных систем уменьшает количество зависимостей между сервисными компонентами. Это, в свою очередь, уменьшает объем возможных последствий, порожденных сбоями или модификациями распределенных систем. В таблице 5.1, заимствованой из источника [5], приведено сравнение ряда характеристик слабосвязанных и сильносвязанных систем.
Таблица 5.1 — Сравнение слабосвязанных и сильносвязанных систем
|
Сильносвязанные |
Слабосвязанные |
|
системы |
системы |
|
|
|
Физические соединения |
Точка-точка |
Через посредника |
|
|
|
Стиль взаимодействий |
Синхронные |
Асинхронные |
|
|
|
Модель данных |
Общие сложные типы |
Простые типы |
|
|
|
Связывание |
Статическое |
Динамическое |
|
|
|
Платформа |
Сильная зависимость от |
Независимость от базовой |
|
базовой платформы |
платформы платформы |
|
платформы |
|
Развертывание |
Одновременное |
Постепенное |
|
|
|
Таким образом:
•традиционный подход разработки распределенных приложений обычно значительно усложняет создание и сопровождение РВ-сетей;
•веб-сервисы, используя слабую связанность сервисов, позволяют значительно упростить координацию распределенных систем и их реконфигурацию.

201
5.1.2 Web-сервисы первого и второго поколений
Первое поколение веб-сервисов (до 2007 года) опиралось на парадигму XML веб-служб, позволяющих создавать независимые масштабируемые слабосвязанные приложения. Для этого использовалось три основных стандарта: WSDL, UDDI и SOAP, образующие так называемый «Треугольник SOA», показанный на рисунке 5.1.
Рисунок 5.1 - Взаимодействие между клиентом и поставщиком веб-сервиса (заимствовано из источника [5])
Согласно общим представлениям [59]: «UDDI (англ. Universal Description Discovery & Integration, ...) — инструмент для расположения описаний вебсервисов (WSDL) для последующего их поиска другими организациями и интеграции в свои системы. UDDI это кросплатформенное программное обеспечение, основанное на XML. UDDI является открытым проектом, спонсируемым OASIS, который позволяет организациям публиковать описания веб-сервисов (WSDL) для последующего их поиска другими организациями и интеграции в свои системы, а также определять, как сервисы или приложения взаимодействуют через Internet. UDDI был первоначально предложен в качестве основного веб-сервис стандарта. Он предназначен для опроса SOAP сообщениями и для обеспечения доступа к ...
документам, описывающим привязки протоколов и форматов сообщений, необходимых для взаимодействия с веб-услугами, перечисленными в его каталоге. ...».
Соответственно [60]: «WSDL (англ. Web Services Description Language) — язык описания веб-сервисов и доступа к ним, основанный на языке XML. Последняя официальная спецификация на момент написания статьи версия 2.0 (WSDL Version 2.0 от 26 июня 2007 года), которая имеет статус рекомендации, и версия 1.1 (WSDL Version 1.1 от 15 марта 2001 года), которая имеет статус заметки (note). ...».
Протокол SOAP [22] обеспечивает непосредственную передачу между клиентом сервиса поставщиком сервиса. Сообщения передаются XML-конвертами (Envelope), общая структура которых показана на рисунке 5.2.

202
SOAP-ENV: Envelope
SOAP-ENV: Header
SOAP-ENV: Body
Рисунок 5.2 — Структура сообщения протокола SOAP
Здесь [22]:
•Envelope – Корневой элемент, определяющий сообщение и пространство имен, использованное в документе.
•Header – Содержит атрибуты сообщения, такие как: информация о безопасности или о сетевой маршрутизации.
•Body – Содержит сообщение, которым обмениваются приложения.
•Fault – Необязательный элемент, который предоставляет информацию об ошибках, произошедших при обработке сообщений.
Качественные характеристики веб-сервисов первого поколения:
•контент сервисов формируется поставщиками сервисов;
•отсутствуют единые стандарты протоколов авторизации и аутентификации пользователей, что требовало от поставщиков сервиса проводить самостоятельные разработки;
•отсутствует понятие состояния сервиса (все сервисы являются независимыми и после обращения клиента, его состояние на сервере не сохраняется ).
Начиная с 2004 года начинают публиковаться и внедряться различные стандарты, обеспечивающие повышение качества работы веб-сервисов. В первую очередь к ним относятся:
•WS-Security – обеспечение безопасности веб-сервисов;
•WS-Addressing – маршрутизация и адресация SOAP-сообщений;
•WSRF, WS-Notification – работа с состоянием веб-сервисов.
Внедрение перечисленных стандартов позволило многим разработчикам говорить о «Втором поколении веб-сервисов», качественными характеристиками которых являются:
•контент сервисов формируется пользователями сервисов;
•используются единые стандарты протоколов авторизации и аутентификации пользователей;
•в разработках сервисов начинает использоваться «Состояние сервиса».