
- •Введение
- •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 Облачные вычисления и «виртуализация»
- •Вопросы для самопроверки
- •Список использованных источников
- •Алфавитный указатель

203
5.1.3 Брокерные архитектуры web-сервисов
Излишне напоминать, что «Треугольник SOA», показанный на рисунке 5.1, демострирует взаимодействие клиента и сервера с помощью посредника (брокера). В целом, выделяется три разновидности такого взаимодействия: прямой вызов через UDDI, синхронный вызов через посредника и асинхронный вызов через посредника. Рассмотрим каждый из них.
Прямой вызов через UDDI предполагает развертывание «Службы адресов» по хорошо известному потребителю адресу. Потребитель сервиса может использовать UDDI для поиска других Web-служб (Провайдеров сервиса). Взаимодействие потребителя, UDDI-службы и провайдеров сервиса показано на рисунке 5.3.
Провайдер-1 сервиса
Потребитель |
UDDI-сервер |
... |
|
сервиса |
|||
|
|
Провайдер-N сервиса
Рисунок 5.3 — Прямой вызов через UDDI
Получив адрес, потребитель самостоятельно обращается к провайдеру сервиса и ведет с ним собственный диалог.
Такой подход имеет ряд недостатков, которые можно сформулировать следующим образом:
•Потребитель должен знать URI оконечной точки провайдера для вызова службы. Он использует UDDI как каталог для поиска этого URI.
•Если имеется несколько провайдеров, UDDI содержит несколько URI, и потребитель должен выбрать один из них.
•Если провайдер сервиса меняет URI оконечной точки, он должен повторно зарегистрироваться на сервере UDDI для того, чтобы UDDI хранил новый URI. Потребитель должен повторно запросить UDDI для получения нового URI.
Всущности, использование прямого вызова UDDI означает, что каждый раз, когда потребитель хочет вызвать службу, он должен запросить URI оконечных точек в службе UDDI. Такой подход также вынуждает потребителя самостоятельно оценивать качество провайдера каким-либо способом.

204
Синхронный вызов через посредника предполагает использование «интеллектуального брокера», который способен самостоятельно проводить оценку провайдеров сервиса на предмет его присутствия в сети, качества обслуживания и загруженности запросами.
Потребитель вызывает прокси-службу такого брокера, который, в свою очередь, оценивает загруженность провайдеров, выбирает одного из них и передает UDDI. UDDI возвращает только один URI, и потребитель не должен делать выбор. Потребитель даже может и не знать, что оконечная точка является прокси-служ- бой. Он знает только о том, что может использовать этот URI для вызова Webслужбы. Взаимодействие потребителя, UDDI-службы и провайдеров сервиса показано на рисунке 5.4.
|
UDDI-сервер |
|
Потребитель |
Брокер |
|
сервиса |
||
|
||
|
Прокси-служба |
|
|
брокера |
Провайдер-1 сервиса
...
Провайдер-N сервиса
Рисунок 5.4 — Синхронный вызов через посредника
В РВ-сети слабосвязанных приложений исползование синхронного вызова, также имеет ряд недостатков:
•Потребитель должен ждать окончания выполнения службы провайдера. На это время поток исполнения клиента должен быть заблокирован.
•Если служба провайдера выполняется длительное время, то потребитель может прекратить ожидание ответа.
•Имеются случаи, когда потребитель выполняет запрос, но не может ждать ответ провайдера сервиса.
•Если у потребителя возникает аварийная ситуация во время блокировки его работы, то ответ будет потерян и вызов сервиса нужно будет повторить.
Асинхронный вызов через посредника решает многие проблемы, связанные как с реализацией брокера, так и с организацией взамодействия потребителя (клиентское приложение) провайдера (поставщика сервиса).
При таком подходе, потребитель использует два асинхроных канала связи с брокером. По одному каналу передает запрос брокеру, который ставит его в свою очередь запросов. По другому каналу, потребитель асинхронно забирает ответ из очереди ответов брокера.
Соответственно брокер, используя свои оценки провайдров сервиса, разрешает или ограничивает им доступ к очередям запросов и ответов. В таком случае,

205
провайдеры сервисов получают доступ к запросам клиентов, конкурируя между собой и с учетом своих аозможностей. Взаимодействие потребителя, брокера и провайдеров сервиса показано на рисунке 5.5.
|
Очередь |
|
|
запросов |
|
Потребитель |
Брокер |
|
сервиса |
||
|
||
|
Очередь |
|
|
ответов |
Провайдер-1 сервиса
...
Провайдер-N сервиса
Рисунок 5.5 — Асинхронный вызов через посредника
Таким образом, асинхроныый подход является наиболее предпочтительным при создании РВ-сетей. Его основные преимущества:
•Потребитель не должен блокировать свою работу при ожидании ответа и может в это время выполнять другую работу. Следовательно, потребитель намного менее чувствителен к продолжительности работы службы у провайдера.
•Брокер, предоставляющий возможность потребителю вызывать Web-службу асинхронно, реализуется при помощи системы обмена сообщениями, которая использует очереди сообщений для передачи запроса и получения ответа.
•Аналогично синхронной прокси-службе, пара очередей сообщений выступает как один адрес, использующийся потребителем для вызова службы независимо от количества возможных прослушиваемых провайдеров.
Завершая краткий теоретический обзор концепции SOA, отметим, что «Сервис-ориентированные технологии» не ограничиваются только веб-службами. Веб-службы являются наиболее «модным» современным направлением, который еще не достиг пика своих возможностей. Тем не менее, мы должны помнить, что слабо связанные приложения и сервисы, не сохраняющие состояние запросов клиентов, больше соответствуют публичной сфере использования РВ-сетей. Большинство же приложений требуют учета поставщиками сервисов своих состояний, что значительно усложняет как разработку, так и сопровождение подобных распределенных систем.