
- •Вызовы удаленных процедур
- •План
- •Для чего нужно?
- •Промежуточное программное обеспечение
- •RPC middleware
- •Преимущества
- •Где используются?
- •Какие существуют реализации?
- •Основные определения
- •Схема запроса
- •Вызов удаленной процедуры
- •Выполнение процедуры
- •Синхронное и асинхронное
- •Синхронное выполнение
- •Асинхронное выполнение
- •Обратный вызов
- •Авторизация
- •RPC на реальных машинах
- •Разработка RPC программ
- •Язык описания интерфейсов (rpcgen)
- •Другие недостатки SUN RPC
- •CORBA – common object relations broker architecture
- •Объектно-ориентированный подход
- •Распределенные объектные системы
- •CORBA
- •Преимущества
- •Реализации
- •Структура
- •ORB – object relations broker
- •Взаимодействие между
- •Прокси и адаптор
- •Взаимодействие между объектами
- •Объектная ссылка (IOR)
- •Взаимодействие между объектами
- •Службы
- •Поиск объектов
- •Служба имен
- •Поиск в службе имен
- •Хранилища реализаций и интерфейсов
- •CORBA
- •DCOM
- •Компонентная модель
- •Пример запуска CORBA объекта
- •Язык описания интерфейса
- •Особенности
- •Примеры
- •Вопросы ?

Разработка RPC программ
Для разработки распределенных программ достаточно знать только интерфейсы (типы аргументов и возвращаемые значения)
Можно ввести специальный язык описания интерфейсов (rpcgen -> C/C++)
Возможности программ можно наращивать постепенно добавляя новые удаленные процедуры на разных серверах

Язык описания интерфейсов (rpcgen)
program MYPROG { version MYVER {
int MYPROC (string) = 1;
}= 1;
}= 0x2000000;
Все интерфейсы взаимодействия создаются автоматически
На сервере пользователь должен определить функцию int* myproc_1 (char**) {…}
На клиенте вызов выполняется char* str = “Привет!”; CLIENT* cl=clnt_create(…); res = myproc_1(&str, cl)

Другие недостатки SUN RPC
Нет прозрачности расположения
Нужно явно указывать, где находится сервер
Нет простой системы имен для нахождения серверов по их функциям
Только процедурная ориентированность
Не рассчитано на объектно-ориентрованные программы (нет наследования, полиморфизма)
Единственный стандартный сервер – portmap
Для распределенных приложений часто нужно выполнять синхронизацию, блокировки, транзакции
Слабая система безопасности

CORBA – common object relations broker architecture

Объектно-ориентированный подход
Объект
структура данных (свойств)
имеет уникальное имя
определены операции (методы), которые с этим (для этого) объекта можно выполнять
Инкапсуляция – вся сложность объекта скрыта от внешнего мира, внешнему миру доступны только имя и интерфейсы (методы)
Классификация – объекты с одинаковой структурой и методами принадлежат к одному классу
Наследование – усложнение классов путем добавления новых свойств и методов
Полиморфизм – в зависимости от контекста методы с одинаковыми именами могут выполнять разные действия

Распределенные объектные системы
Объекты существуют в разных программах или даже на разных машинах
Объект из одной программы может вызывать методы объекта, который существует в другой программе
Машина 2
Обект remote Машина 1
Вызов функции |
сеть |
Выполнение функции |
Remote.proc(int a, char* b) |
|
|
|
Remote.proc(int a, char* b) |

CORBA
Стандарт для разработки распределенных объектно-ориентированных программ
Независим от аппаратной и программной платформы
Разработано Object Management Group (OMG) http://www.omg.org
CORBA 1.0, 2.0, 3.0

Преимущества
Стандарт
Рассчитан на гетерогенность
Совместим со многими языками программирования
Обеспечивается безопасность и надежность
Прозрачность расположения, конкуренции, параллелизма, миграции
Объектно-ориентирован
Параллелизм на уровне объектов

Реализации
MICO http://www.mico.org/
DCOM http://www.microsoft.com
Orbacus
OmniORB
TAO (The ACE ORB)
ORBit

Структура
|
|
Серверный |
|
Клиентский |
|
Серверный |
Клиентский |
|
|
|
|||
объект |
|
объект |
|
объект |
|
объект |
|
|
|
|
|
|
|
ORB – object relations broker middleware
Служба |
|
Маклерская |
|
Служба |
|
Стандартные |
|
Стандартные |
имен |
|
служба |
|
блокировок |
|
интерфейсы |
|
реализации |
|
|
|
|
|
|
|
|
|