- •Вызовы удаленных процедур
- •План
- •Для чего нужно?
- •Промежуточное программное обеспечение
- •RPC middleware
- •Преимущества
- •Где используются?
- •Какие существуют реализации?
- •Основные определения
- •Схема запроса
- •Вызов удаленной процедуры
- •Выполнение процедуры
- •Синхронное и асинхронное
- •Синхронное выполнение
- •Асинхронное выполнение
- •Обратный вызов
- •Авторизация
- •RPC на реальных машинах
- •Разработка RPC программ
- •Язык описания интерфейсов (rpcgen)
- •Другие недостатки SUN RPC
- •CORBA – common object relations broker architecture
- •Объектно-ориентированный подход
- •Распределенные объектные системы
- •CORBA
- •Преимущества
- •Реализации
- •Структура
- •ORB – object relations broker
- •Взаимодействие между
- •Прокси и адаптор
- •Взаимодействие между объектами
- •Объектная ссылка (IOR)
- •Взаимодействие между объектами
- •Службы
- •Поиск объектов
- •Служба имен
- •Поиск в службе имен
- •Хранилища реализаций и интерфейсов
- •CORBA
- •DCOM
- •Компонентная модель
- •Пример запуска CORBA объекта
- •Язык описания интерфейса
- •Особенности
- •Примеры
- •Вопросы ?
Основные определения
Процедура характеризуется
номером программы
номером версии
номером функции
Клиент – программа, которая вызывает удаленную функцию
Сервер – программа, которая выполняет запрос клиента
Определитель транспорта – сервер, который ставит в соответствие номеру программы и номеру версии порт транспортного протокола
Схема запроса
Машина 1 (клиент)
Вызов функции 1 программы 1, версии 1 на машине 2
Обращение к библиотеке
Запрос на сервер какой номер порта у программы 1 версии 1?
Обращение к машине 2 порт 1234. Вызов функции 1 и получение результата
Машина 2 (сервер)
Portmap порт 111
Ответ порт 1234
Сервер 1,1 слушает порт 1234
Выполнение функции 1 и возврат результата
Вызов удаленной процедуры
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Использование |
||||||
клиентом |
|
|
|
|||||||||||||||||
|
|
|
Int r =proc(int a, char* b) |
|
|
|
|
|
|
результата |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
Определение порта и |
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
транспортного протокола |
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
сервера (udp/1234) |
|
|
|
Десериализация результата |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
XDR – extended data representation |
||||||||
|
|
|
|
Авторизация |
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
XDR_int(r) |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Передача номера процедуры |
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
Прием результата от |
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
сервера |
|
||||
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сериализация агрументов |
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
XDR – extended data representation |
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
Ожидание результата |
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
XDR_int(a), XDR_string(b)
Передача аргументов не |
сервер |
Выполнение процедуры
серверомРегистрация в
|
определителе транспорта |
|
|
|
|
|
||
|
и получение номера |
|
|
|
|
|
||
|
|
|
Передача результата |
|
||||
|
порта (udp/1234) |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сериализация результата |
|
|
|
Ожидание запросов |
|
||||||
|
|
|
|
|
|
|||
|
(udp/1234) |
|
|
XDR_int |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
авторизация |
|
Выполнение процедуры |
||
|
|
|
Int proc(int a, char* c) |
|
|
|
|
||
|
|
|
|
|
Прием номера процедуры Десериализация
аргументов
|
Прием аргументов |
|
XDR_int, XDR_string |
|
|
||
|
|
|
|
Синхронное и асинхронное |
|||||
выполнение |
Асинхронный |
||||
Синхронный |
|||||
|
|
||||
|
|
|
|
|
|
Вызов процедуры |
|
Вызов процедуры |
|||
|
|
|
|
|
|
|
|
|
|
|
|
Ожидание результатов |
|
Продолжение работы |
||
|
|
|
|
|
|
|
|
|
|
Получение результатов |
|
Прерывание работы |
||
|
|
|
|
|
|
|
|
|
|
Продолжение работы |
|
Получение результатов |
|
|
|
|
|
Продолжение работы
Синхронное выполнение
Преимущества
Простота реализации программы
Недостатки
Затрачивается время на ожидание
Асинхронное выполнение
Преимущества
Эффективное использование процессорного времени
Недостатки
Сложность реализации программ
Обратный вызов
Клиент вызывает функцию на сервере и продолжает работу
Сервер после выполнения функции вызывает функцию на клиенте
И сервер и клиент являются агентами
Авторизация
AUTH_NONE отсутствует
AUTH_SYS по идентификатору пользователя
AUTH_DES по зашифрованному имени машины
