
- •Введение
- •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 Облачные вычисления и «виртуализация»
- •Вопросы для самопроверки
- •Список использованных источников
- •Алфавитный указатель
103
языке IDL DCE.
•Компилятор IDL — программа, преобразующая файл определения интерфейса в три файла с исходным текстом на языке С: общий заголовочный файл, код клиентской заглушки и код серверной заглушки.
•Далее, технология DCE RPC разделяется на две части типичной технологии языка С, обеспечивающей создание программ клиента и сервера.
Мы не будем рассматривать конкретные примеры реализации брокерной модели RPC, поскольку, как отмечено выше, существует множество вариантов реализации языков IDL. Имеются также расширения этой модели ориентированные на асинхронное взаимодействие клиента и сервера, но в целом, в современных представлениях, технология RPC считается устаревшей. Ее основной недостаток — ограниченное время жизни вызываемой процедуры на стороне сервера. В условиях принципиальной ненадежности взаимодействия в сети, возникают проблемы подтверждения результата или ошибок исполнения вызываемых процедур. Желающим подробно изучить эту проблематику следует обратиться к главе 2 источника [3].
3.1.2 Использование удаленных объектов
Значительным развитием брокерной модели взаимодействия «Клиент-сер- вер» стало использование объектов, реализуемых средствами языков ООП. Это позволило устранить основной недостаток технологии RPC, сохраняя объекты результатов запросов клиентов на стороне сервера нужное количество времени.
Вцелом, брокерная модель взаимодействия объектов очень похожа на брокерную модель RPC. Ранее, на примере рисунка 1.10 технологии RMI, было показано, что:
•на стороне программы-клиента создается объект-заглушка (stub, proxy), реализующий методы маршалинга: преобразования имени объекта, вызываемого метода и его аргументов в поток данных, передаваемых по протоколам серверу;
•на стороне программы-сервера создается объект-заглушка (sceleton), реализующий методы демаршалинга: преобразования входного потока данных в запрос к объекту сервера.
Вобщем случае считается, что удаленный объект (Remote object), расположенный на сервере, имеет:
•Состояние (State) — данные инкапсулируемые (включаемые) объектом.
•Методы (Methods) — операции над данными состояния объекта.
•Интерфейс (Interface) — программный код, обеспечивающий доступ к методам объекта.
На основании конструктивных понятий состояния, метода и интерфейса
вводится ряд более общих определений.

104
Распределенный объект (Distributed object) — удаленный объект, интерфейсы которого расположены на машинах клиентов, что демонстрируется рисунком 3.5.
Рисунок 3.5 — Обобщенная организация удаленных объектов (заимствовано из источника [3])
Объект времени компиляции — объект, который может быть полностью описан в рамках своего класса и интерфейсов. В качестве таких описаний могут использоваться объекты и интерфейсы языка Java.
Адаптер объектов (Object adapter) — программная оболочка (wrapper), единственная задача которой — придать реализации видимость объекта.
Сохранный объект (Persistent object) — объект способный существовать за пределами адресного пространства серверного процесса.
Нерезидентный объект (Transient object) — объект способный существовать только под управлением запущенного сервера.
Удаленное обращение к методам (Remote Method Invocation) — объектная технология, например - RMI, реализованная на языке Java.
Статическое обращение (Static invocation) — способ использования предопределенных интерфейсов, предполагающий их предварительную компиляцию в виде заглушек для программ клиентов и сервера.
Динамическое обращение (Dynamic invocation) — способ, предполагающий выбор метода удаленного объекта во время выполнения приложения.
Наличие множества возможных подходов к реализации удаленного доступа к объектам потребовало разработки стандартов такого взаимодействия. Наиболее общим подходом является стандартизация проекта CORBA.