Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Введение в распределенные системы. Учебное пособие
.pdf
вызывающей и вызываемой процедур происходят на разных
компьютерах (возможно, компьютеров различных типов) и
возникают сложности при передаче параметров и результатов.
Удаленный вызов процедур обычно реализуется без
использования технологии разделяемой памяти, применяе-
мой с целью увеличения скорости прохождения данных между процессами. Традиционно обмен информацией между
процессами использует ресурсы процессора. Технологии использования разделяемой памяти позволяют реализовать такой обмен не через регистры процессора, а через некоторую
часть виртуального адресного пространства, куда записываются и откуда извлекаются данные. Поскольку разделяемая
память не используется, то параметры удаленного вызова
программ не могут иметь в своем составе указатели на ячейки, не входящие в состав стековой памяти, т.е. производится
копирование значений параметров с одного компьютера на
другой.
Следует отметить, что в отличие от локального вызова.
RPC всегда использует нижележащие уровни связи, как в неявном виде, так и в определении процедур, и в самих процедурах.
И еще одно отличие. В реализации RPC вызова участвуют как минимум один клиентский и один серверный процессы. Выполнение локального вызова на одном компьютере
реализуется только в рамках единого процесса.
Со стороны клиента отправляется сообщение на сервер
с параметрами вызываемой процедуры. Клиент переходит в
состояние ожидания ответного сообщения с результатами
выполнения процедуры. Когда поступает ответ, результаты
извлекаются, и клиентский процесс продолжает работу.
На серверной стороне процесс, обрабатывающий вызовы процедур, ожидает поступление очередного вызова. Как
только это событие происходит, – считываются параметры
процедуры, осуществляется ее выполнение, а потом отправ-
51

Клиент
среда
Сервер
среда
ляется ответ и осуществляется переход процесса-обработчика
в состояние ожидания очередного вызова. RPC вызов схемотично представлен на рис. 9.
Клиентский процесс
Вызывающая функция
Заглушка клиента
Промежуточная
Сетевая служба ОС Сетевая служба ОС
Канал
передачи
Серверный процесс
Вызываемая функция
Заглушка сервера
Промежуточная
Рис. 9. Удаленный вызов процедур
После вызова процедуры-заглушки происходит передача аргументов на удаленный компьютер, где содержится
вызываемая функция. Передача осуществляется посредством
промежуточного ПО. Предварительно информация преобразуется в формат, требуемый для использования транспортного протокола.
На удаленном компьютере посредством промежуточного ПО происходят извлечение параметров, которые были
переданы, из сообщения транспортного уровня и дальнейшая
их передача необходимой функции (рис. 9). Получение результатов выполнения вызванной процедуры стороной клиента происходит по аналогии с описанной выше схемой.
Отличия вызовов удаленных процедур от вызовов локальных процедур перечислены ниже.
52

1. При вызовах удаленных процедур на сервере или в
сети клиенту всегда высылаются сообщения о возникших
ошибках.
2. При вызовах удаленных процедур доступ к адресному пространству со стороны сервера отсутствует, поэтому
передача данных через глобальные переменные не приемлима.
3. Локальные процедуры обычно выполняются быстрее, чем аналогичные удаленные процедуры.
4. Удаленные процедуры вызываются по сети, что требует использования алгоритмов аутентификации клиента.
По своим функциональным особенностям RPC находится в промежуточном положении между уровнями приложения и транспортным. В соответствии с моделью OSI для
данного положения подходит уровень представления и сеансовый уровень. Теоретически такое соответствие указывает
на независимость RPC от реализации сети, в том числе от
протоколов транспортного уровня.
6.3.3. Обращение к удаленным объектам (RMI)
Развитие технологии RPC обусловило появление её
объектной реализации, получившей название RMI (Remote
Method Invocation). RMI позволяет приложениям, и со стороны клиента, и со стороны сервера через сеть вызывать методы
клиентов/серверов, выполняющихся в Java Virtual Machine.
Виртуальная машина Java – это набор компьютерных про-
грамм и структур данных, которые используют модель виртуальной машины для выполнения других компьютерных программ и скриптов.
В соответствие с RMI клиенту необходимо использовать ссылки, содержащие сетевой адрес сервера и полный
путь к объекту на сервере, включая локальный идентификатор объекта в адресном пространстве сервера. Подобная
53

ссылка кодируется в стек протоколов, требуемых для взаимодействия клиента и сервера.
Объект – это, в данном случае, стандартно оформлен-
ный программный модуль, в состав которого могут входить
данные и операции над этими данными.
Состояния (свойства) объекта – данные, входящие в
состав объекта, методы - операции над этими данными.
Интерфейс объекта служит для доступа к методам.
Объект может реализовывать большое количество интерфейсов, для описания интерфейса тоже могут существовать несколько объектов.
Распределенный объект – объект, интерфейс которого содержится на другом компьютере по отношению к самому объекту. Распределенные объекты сосредоточены на одном компьютере, их данные не распределяются. С других
компьютеров доступны только интерфейсы, реализованные в
объекте.
Когда клиент обращается к распределенному объекту,
то управление передаётся программе, реализующей интерфейс объекта. Такая программа аналогична заглушке клиента,
- посреднику (proxy). Она реализует передачу параметров от
вызывающей программы к ОС ЭВМ клиента и обратно по
аналогии с функционированием клиентской заглушки. На
стороне сервера передачу параметров от ОС сервера к методам объекта и обратно реализует скелетон (каркас) – аналог
серверной заглушки. Используемый язык программирования
задает форму объектов РС.
На рис. 10 представлены функциональные схемы обращения к удаленным объектам. Client Stub и Server Stub
происходят от общего интерфейса, но характеризуются своими функциями. Назначение Client Stub – подсоединения к
RMI Registry, а назначение Server Stub – связь с функциями
сервера.
54

Сервер
Клиентский процесс
Объект
Интерфейс удале
н-
К
аркас
Клиент
Клиентский процесс
Client
Stub
Server
Skeleton
Состояние объе
кта
Ссылка на посредника
Интерфейс удаленного
объекта
Посредник
ного объекта
Промежуточая среда Промежуточная среда
Сетевые службы ОС
Сетевые службы ОС
Канал
передачи
данных
Java Client
RMI Registry
Рис. 10. Использование удаленных объектов
Java Server
55

7. РАСПРЕДЕЛЕННЫЕ СИСТЕМЫ ОБЪЕКТОВ
7.1. Технология CORBA
В 1989 создан консорциум OMG (Object Managment
Group) – группа компаний, основной целью которой является
определение набора спецификаций для разработки РИС. Решение задачи разработки единообразной архитектуры дало
возможность повторно использовать и интегрировать программный код. Консорциумом разработана открытая архитектура и набор стандартов, сконцентрированных в понятии
OMA (Object Managment Architecture). На данный момент
OMG объединяет большинство крупнейших производителей
ПО, кроме Microsoft.
Технология CORBA (Common Object Request Broker
Architecture) позволяет интегрировать изолированные системы, также позволяет программам, разработанным на разных
языках, функционирующим в разных узлах сети, взаимодействовать между собой с той же легкостью, как и в едином адресном пространстве одного процесса.
CORBA устанавливает основные правила взаимодействия компонент (объектов) на представительском и прикладном уровнях модели OSI и делает возможным рассматривать все приложения в РИС как объекты. Объекты, чередуясь, могут брать на себя как роль, как клиента, так и сервера:
роль клиента, если объект выступает в роли инициатора вызова метода у другого объекта; роль сервера, если другой
объект вызывает на нем какой-нибудь метод. Таким образом,
использование CORBA очень эффективно позволяет разрабатывать достаточно гибкие системы, чем системы клиентсервер.
Язык описания интерфейсов (IDL) – средство, позволяющее определять операции, вызываемые клиентами в
удаленных серверных объектах. Методы IDL могут быть реализованы на любом языке, для которого имеется отображение
56

из IDL, и представляют собой мощное средство описания интерфейсов CORBA объектов любой сложности.
7.2. Промежуточные среды Microsoft Windows
Рассмотрим технологии, созданные для Microsoft
Windows и являющиеся альтернативными по отношению к
CORBA.
1. Компонентная модель COM (Component Object
Model). Технология предназначена для разработки программ-
ного обеспечения на основе взаимодействующих компонен-
тов объекта, при этом компоненты могут быть использованы
во множестве других программ одновременно. Компоненты
характеризуются четко определенными интерфейсами. Технология дает возможность создавать РИС в рамках одного
компьютера.
2. Распределенная компонентная модель DCOM
(Distributed Component Object Model). Технология представляет собой расширение СОМ и востребована для распределения приложений между компьютерами в сети. Данная модель
поддерживает среду распределенных вычислений DCE (Distributed Computing Environment) и механизм удаленного вызова процедур RPC.
3. Модель СOM+. Технология расширяет возможности
DCOM в позициях распределенной обработки транзакций
(MTS). Технология востребована для разработки локальных
РИС. Основная цель создания модели COM+ – формирование
инфраструктуры для создания РИС автоматизации предприятия.
7.3. Технология активных объектов ActiveX
Технология активных объектов ActiveX создана компанией Microsoft. Данная платформа используется для построения программных компонентов, пригодных к использованию из программ, написанных на разных языках програм-
57

мирования. ПО собирается из компонентов, функциональность которых востребована для разработки проекта.
Технология предоставляет для разработки кода наборы
стандартных библиотек. Она очень востребована в ОС семейства Microsoft Windows, но не привязана к ОС. Технология
позволяет разнообразить страницы сетевого приложения Web
эффектами мультимедиа, интерактивными объектами или
сложными приложениями и обеспечивает механизмы, позволяющие отдельным программным компонентам на разных
компьютерах объединяться в единую РС. Распространённый
функционал ActiveX – это кнопки, списки, диалоговые окна и
т.д.
Большое количество приложений для Microsoft
Windows, в том числе разработки самой Microsoft (Internet
Explorer, Microsoft Office, Microsoft Visual Studio,Windows
Media Player и др.), используют элементы ActiveX для реали-
зации необходимых функциональных возможностей и последующей инкапсуляции их в элементы ActiveX. Процесс ин-
капсуляции служит для упаковки данных и/или функций в
единый компонент. Создавать элементы ActiveX можно с помощью любого языка программирования, поддерживающего
разработку компонентов COM: C++, Delphi, Visual Basic,
.NET Framework (C#/VB.NET).
Элементы ActiveX очень похожи на технологии Java,
позволяющие создавать прикладные программы - Javaапплеты, которые функционируют под любой платформой.
Элементы ActiveX имеют узкую ориентацию на продукты
Microsoft.
Технологию ActiveX необходимо применять с осторожностью, поскольку вместе с требуемыми элементами
ActiveX можно установить с вебсайтов злоумышленников
вредоносное ПО.
58

7.4. Технологии. Net Framework
Рассмотренные выше технологии предшествовали появлению Microsoft.NET Framework, дающей возможность
скомпилированным приложениям на любой аппаратной
платформе работать в среде Windows. .NET Framework, поддерживает следующие технологии РИС: очередь сообщений,
объекты COM+, веб-сервисы, объекты .NET Remoting. В основе платформы лежит среда Common Language Runtime
(CLR), предназначенная для разных языков программирования.
После компиляции программы создается файл, содержащий псевдокод или байт-код (не исполнительный файл).
Псевдокод называется Microsoft Intermediate Language
(MSIL) или Common Intermediate Language (CIL) и является
промежуточным языком Microsoft.
CLR позволяет преобразовывать код MSIL в исполнительный код в процессе выполнения программы. Программа,
скомпилированная в MSIL, может выполняться в любой среде, содержащей реализацию CLR.
7.5. Технология EJB
EJB (Enterprise JavaBeans) – это технология построения РИС, которая предполагает, что достаточно программировать лишь бизнес-логику приложения, а стандартные
функции, например, обработка транзакций, должны выполняться на стороне сервера.
Конкурентами EJB являются RMI, CORBA, DCOM и
другие технологии. EJB базируется на многих принципах
CORBA. Существует стандарт отображения EJB на CORBA в
контексте службы имен, управления транзакциями и безопасностью.
Технология EJB предназначена для разработки инфраструктуры для компонент, которые можно достаточно просто
59

«вставлять» и удалять из серверов. Эта программная платформа либо увеличивает, либо уменьшает возможности серверной части РИС.
Любая компонента в среде EJB выполняет свои функции внутри контейнера, отделяющего её от ОС сервера. Путем использования контейнера не только автоматически выделяется компонента, но и осуществляется управление поддержкой параллелизма, защиты, долговременного хранения,
транзакционной обработки и других служб, предоставляемых
приложениям со среды сервера.
Данная технология предоставляет большое число готовых решений для разработки приложения.
60
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
