
- •1. Модели взаимодействия компонентов рис
- •2. Обмен сообщениями
- •3. Удаленный вызов процедур
- •3.1. Вызов распределенных процедур.
- •4. Механизм работы rpc
- •5. Обращение к удаленным объектам (rmi)
- •6. Связь на основе потоков данных
- •7. Архитектура распределённых приложений
- •7.1. Принципы создания системы обработки информации в масштабе предприятия
- •7.2. Парадигма распределенных вычислений
- •8. Архитектура распределенных приложений
- •9. Физическая структура распределенных приложений
- •10. Распределение бизнес-логики по уровням распределенного приложения
- •11. Уровень представления данных
- •12. Уровень обработки данных
- •13. Уровень управления данными
- •14. Уровень хранения данных
- •15. Расширения базовых уровней
3. Удаленный вызов процедур
Идея удаленного вызова процедур (remote procedure call, RPC) появилась в середине 80-х годов и заключалась в том, что: при помощи промежуточного программного обеспечения функцию на удаленном компьютере можно вызывать так же, как и функцию на локальном компьютере.
Чтобы удаленный вызов происходил прозрачно с точки зрения вызывающего приложения, промежуточная среда должна предоставить процедуру-заглушку (stub), которая будет вызываться клиентским приложением.
После вызова процедуры-заглушки промежуточная среда:
1) преобразует переданные ей аргументы в вид, пригодный для передачи по транспортному протоколу,
2) и передает эти аргументы на удаленный компьютер с вызываемой функцией.
3) на удаленном компьютере параметры извлекаются промежуточной средой из сообщения транспортного уровня и передаются вызываемой функции (рис. 2).
4) аналогичным образом на клиентскую машину передается результат выполнения вызванной функции.
Рис. 2. Удаленный вызов процедур
Пример.
Необходимо из процесса, запущенного на машине А вызвать процедуру на машине В.
Информация может быть передана через параметры и возвращена в виде результата. При этом программист не должен замечать, откуда вызывается процедура (прозрачность доступа).
Процедура- это фрагмент программы, оформленный стандартным образом и доступный для использования другими программами с помощью стандартных операций вызова процедур.
Модель, с помощью которой реализуется такое взаимодействие, называется Удаленный вызов процедур (Remote Procedure Call, RPC).
Это один из ранних методов организации связи, лежащий в основе многих современных технологий РИС.
В модели удалённого вызова процедур (RPC) акцент делается на сокрытие сетевого обмена за счет того, что процессу разрешается вызывать процедуры, реализация которых находится на удаленной машине.
Алгоритм работы модели:
1. При вызове процедуры параметры передаются на удаленную машину, где эта процедура выполняется,
2 После выполнения данной процедуры на удалённой машине, управление передается в точку вызова процедуры. Внешне это выглядит как обычный вызов процедуры.
Таким образом, идея вызова удаленных процедур RPC состоит в расширении хорошо известного и понятного механизма передачи управления и данных внутри программы, выполняющейся на одной машине, на передачу управления и данных через сеть.
Средства удаленного вызова процедур предназначены для облегчения организации распределенных вычислений.
Наибольшая эффективность использования RPC достигается в тех приложениях, в которых существует интерактивная связь между удаленными компонентами с небольшим временем ответов и относительно малым количеством передаваемых данных.
Такие приложения называются RPC-ориентированными.
Сама идея проста, но не проста в реализации, так как процесс и процедура находятся на разных машинах в разных адресных пространствах. Имеются проблемы и при передаче параметров.
Существует три возможных варианта удаленного вызова процедур:
1. Синхронный вызов: клиент ожидает завершения процедуры сервером и при необходимости получает от него результат выполнения удаленной функции;
2. Однонаправленный асинхронный вызов: клиент продолжает свое выполнение, получение ответа от сервера:
либо отсутствует,
либо его реализация возложена на разработчика (например, через функцию клиента, удалено вызываемую сервером).
3. Асинхронный вызов: клиент продолжает свое выполнение, при завершении сервером выполнения процедуры он получает уведомление и результат ее выполнения, например через callback-функцию, вызываемую промежуточной средой при получении результата от сервера.