Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Т2. Связь_Таненбаум_СРС_ПРИС.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1.59 Mб
Скачать

120 Глава 2. Связь

Д ополнительный эффект обращения к методам с использованием в качестве параметра ссылки на объект состоит в возможности копирования объектов. Скрыть это невозможно, и в результате мы вынуждены явно указывать на разли­чие между локальными и распределенными объектами. Понятно, что это разли­чие не только разрушает прозрачность распределения — оно также затрудняет написание распределенных приложений.

2.3.5. Пример 1 — удаленные объекты dce

DCE — это пример распределенной системы, появившейся хотя и в правильном месте, но не совсем в нужное время. Она была одной из первых распределенных систем, реализованных в виде промежуточного уровня поверх существующих операционных систем, и достаточно долго вынуждена была доказывать свою со­стоятельность. К сожалению, время доказательств совпало с «рождением» уда­ленных объектов и объявлением их панацеей распределенных систем. Поскольку среда DCE была традиционной, основанной на RPC системой, для нее наступили тяжелые времена. Она была признана устаревшей еще до того, как потребители успели установить достаточное число копий. Нет объектов — нет и разговора, а сре­да DCE их никогда не имела.

Команда, создававшая среду DCE, долго убеждала адвокатов объектных тех­нологий, что в ней реализована поддержка объектов. Так, они утверждали, что системы RPC по определению основаны на объектах, поскольку все вопросы реализации и распределения скрыты за интерфейсами. Однако эти аргументы не котировались, и DCE была вынуждена перейти на более явную объектную тех­нологию. В этом пункте мы рассмотрим, как DCE поддерживает распределенные объекты. Объекты DCE интересны для нас тем, что они являются прямым про­должением модели клиент-сервер, основанной на RPC, и представляют собой мост от вызовов удаленных процедур к обращениям к удаленным объектам.

Модель распределенных объектов DCE

Распределенные объекты были добавлены в DCE в форме расширений языка оп­ределения интерфейсов (IDL) вместе с привязками на языке C++. Другими сло­вами, распределенные объекты в DCE описываются на IDL и реализуются на C++. Распределенные объекты имеют вид удаленных объектов, реализация кото­рых находится на сервере. Сервер отвечает за локальное создание объектов C++ и обеспечение доступа к их методам с удаленных клиентских машин. Других спо­собов создания распределенных объектов не существует.

Поддерживаются два типа распределенных объектов. Динамические распреде­ленные объекты {distributed dynamic objects) — это объекты, которые создаются сервером локально по требованию клиента и к которым в принципе имеет дос­туп только один клиент. Для создания такого объекта сервер должен получить запрос от клиента. Это означает, что каждый класс, чтобы иметь возможность создавать динамические объекты, должен содержать процедуру create, которую можно вызвать, используя стандартный механизм RPC. После создания динами-

2.3. Обращение к удаленным объектам 121

ч еского объекта управление им переходит к исполняющей системе DCE, связы­вающей его с тем клиентом, по требованию которого он был создан.

В противоположность динамическим объектам, именованные распределенные объекты (distributed named objects) не предназначены для работы с единственным клиентом. Они создаются сервером для совместного использования нескольки­ми клиентами. Именованные объекты регистрируются службой каталогов, так что клиент может найти объект и выполнить привязку к нему. Регистрация означает сохранение уникального идентификатора объекта, а также информации о том, как соединиться с сервером объекта. Разницу между динамическими и име­нованными объектами иллюстрирует рис. 2.18.

Обращение к удаленным объектам в DCE

Как можно заметить, все обращения к удаленным объектам в DCE производятся средствами RPC. Клиент, обращаясь к методу, передает серверу идентификатор объекта, идентификатор интерфейса, содержащего метод, идентификацию само­го метода и параметры. Сервер поддерживает таблицу объектов. С помощью этой таблицы сервер, получив идентификатор объекта и идентификатор интерфейса, идентифицирует объект, к которому обратился клиент. Затем он выбирает запро­шенный метод и передает ему параметры.

Поскольку сервер может поддерживать тысячи объектов, DCE предоставляет возможность не держать все объекты в памяти, а помещать их при необходимо­сти во вспомогательное хранилище данных. Когда к серверу приходит запрос на обращение к объекту, отсутствующему в таблице объектов, исполняющая систе­ма может вызвать специализированную функцию поиска, которая извлечет объ­ект из хранилища и поместит его в адресное пространство сервера. Обращение к объекту произойдет после его помещения в оперативную память.