Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Митряев лекции / РИС гр.446зс 2015 / РИС Л,2. гр.445 (2115).docx
Скачиваний:
251
Добавлен:
25.03.2016
Размер:
346.05 Кб
Скачать

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-функцию, вызываемую промежуточной средой при получении результата от сервера.