Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Судаков / Лекции / lec5_rpc.ppt
Скачиваний:
37
Добавлен:
20.03.2015
Размер:
242.69 Кб
Скачать

Хранилища реализаций и интерфейсов

Базы данных, которые содержат информацию, достаточную для запуска серверных приложений (когда не доступен IOR)

Хранилище реализаций – полный путь к программе, которую нужно запустить для создания нужного объекта (сервер)

Хранилище интерфейсов – информация о том для какого интерфейса к какому серверу обращаться (клиент)

Необходимо лишь указать, на какой машине и каком порту работает хранилище реализаций и служба имен

CORBA

DCOM

Компонентная модель

Пользователь

Машина 3 Распределенное приложение (программа), которое при

необходимости выполнения некоторых действий обращается к разным своим компонентам, работающим на разных машинах

 

 

Машина 1

 

Машина 2

Машина 1

 

 

 

 

 

 

Компонент 1

 

Компонент 2

 

Компонент 3

 

 

 

 

 

 

 

 

 

Пример запуска CORBA объекта

<HTML>

<HEAD>

<TITLE> CORBA</TITLE> </HEAD>

<BODY>

<a href="http://www.somewhere.org/cgi-bin/client?- ORBImplRepoAddr+inet:cluster.univ.kiev.ua:5678+-

ORBNamingAddr+inet:cluster.univ.kiev.ua:5679

">Click</a>

<P>

</HTML>

Язык описания интерфейса

Для разработки распределенных программ достаточно знать только интерфейсы (имена объектов и прототипы функций, которые необходимо для них вызывать)

Существует специальный язык для описания интерфейсов – IDL (interface description language)

При компиляции файла описания интерфейса создаются файлы с каркасными реализациями на нужном языке программирования (Java, C, C+ +, Ada…)

Пользователь использует каркасные классы для встраивания в них логической части

IDL -> C++

IDL

interface adding_machine{

void add(in unsigned long X); void subtract(in unsigned long X); long result();

};

Компиляция

idl adding_machine.idl

Создаются каркасные классы

class adding_machine : virtual public CORBA::Object{…} class adding_machine_stub : virtual public adding_machine{…} class adding_machine_skel : virtual public adding_machine{…}

Пользователь определяет реализацию, как производные классы от какркасных class adding_machine_impl : virtual public adding_machine_skel{

void add(in unsigned long X){…}

}

Особенности

Стандарт определяет большинство особенностей, но все же некоторые вещи остаются на усмотрения разработчиков

Хотя созданные приложения и будут взаимодействовать корректно, особенности запуска, инсталляции и др. может существенным образом отличаться

Примеры

Десктоп-системы (GNOME, KDE, MS Windows DCOM)

Java приложения (сервлеты, Java Beans, Java RMI)

Системы банк-клиент

Вопросы ?

Соседние файлы в папке Лекции