Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5.14.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.68 Mб
Скачать

Удаленный вызов процедур

Средство удаленного вызова процедур (remote procedure call, RPC) позволяет создавать приложения, состоящие из произвольного числа процедур, из которых часть выполняется локально, а часть — по сети на удаленных компьютерах. RPC предоставляет модель работы с сетью, ориентированную на процедуры, а не на транспорты, что позволяет упростить разработку распределенных приложений. Сетевое программное обеспечение традиционно основывается на модели ввода-вывода. В Windows NT, например, сетевая операция начинается с того, что приложение выдает запрос удаленного ввода-вывода. ОС обрабатывает запрос, передавая его редиректору, который выступает в качестве удаленной файловой системы. После того как удаленная система отработает запрос и вернет резуль-

Рис. 9-15. Приложение, использующее библиотеки.

таты, сетевая плата генерирует прерывание. Ядро обрабатывает это прерывание, и исходная операция ввода-вывода завершается, возвращая результаты вызыва­ющей программе.

RPC использует совершенно другой подход. Приложения RPC выглядят так же, как и другие структурные приложения, — у них есть главная программа, ко­торая для выполнения специфических задач вызывает процедуры или библио­теки процедур, как показано на рис. 9-15.

Однако отличие между приложениями RPC и обычными программами со­стоит в том, что некоторые библиотеки процедур в приложении RPC выполня­ются на удаленных компьютерах, а другие — локально (см. рис. 9-16).

Для приложения RPC все процедуры выглядят локальными. Другими слова­ми, вместо того, чтобы заставлять программиста писать код для передачи запро­сов на вычисления или ввод-вывод по сети, для работы с сетевыми протокола­ми, обработки сетевых ошибок, ожидания результатов и т. д., программное обес­печение RPC выполняет эти задачи автоматически. А средство RPC Windows NT может работать с любыми доступными протоколами, загруженными в систему.

Для написания приложения RPC программист решает, какие процедуры будут исполняться локально, а какие — удаленно. Например, предположим, что обычная рабочая станция подключена по сети к суперкомпьютеру CRAY или к машине, специально предназначенной для быстрого выполнения векторных вычислений. Если программист пишет программу, работающую с большими матрицами, то с точки зрения производительности имеет смысл переложить математические вычисления на удаленный компьютер, написав программу в виде приложения RPC.

Функционирует приложение RPC следующим образом. В процессе своей работы оно вызывает как локальные процедуры, так и процедуры, отсутствую­щие на локальной машине. Для обработки последнего случая приложение свя­зывается с локальной DLL, которая содержит по одной процедуре—заглушке (stub procedure) для каждой из удаленных процедур. Процедура-заглушка имеет то же имя и интерфейс, что и удаленная процедура, но вместо выполнения соот­ветствующей операции заглушка берет переданные ей параметры и выполняет их преобразование (marshaling) для передачи по сети. Преобразование парамет­ров — это упорядочение и упаковка их в определенном формате, пригодном для пересылки по сети, например, разрешение ссылок и копирование всех структур данных, на которые ссылаются указатели.

Рис. 9-16. Приложение RPC, использующее библиотеки.

Затем заглушка вызывает процедуры библиотеки RPC периода выполне­ния, и они находят компьютер, на котором расположены удаленные процедуры, определяют используемые этим компьютером механизмы транспорта и посыла­ют запрос при помощи локального программного обеспечения сетевого транс­порта. Когда удаленный сервер получает запрос RPC, он выполняет обратное преобразование параметров, реконструирует оригинальный вызов процедуры и вызывает ее. По окончании работы сервер выполняет обратную последователь­ность действий для возврата результатов вызывающей программе. Библиотека RPC периода выполнения показана на рис. 9-17.

Кроме библиотеки периода выполнения, в состав средств RPC Microsoft вхо­дит компилятор — так называемый компилятор MIDL (Microsoft Interface Definition Language, MIDL — язык описания интерфейса фирмы Microsoft). Использование компилятора MIDL упрощает написание приложений RPC. Программист пишет набор обычных прототипов функций (в предположении, что это язык С или C++), описывающих удаленные процедуры. Затем он добавляет к этим прототи­пам некоторую дополнительную информацию, например уникальный для сети идентификатор пакета процедур и номер версии, плюс атрибуты, указывающие, является ли параметр процедуры входом, выходом или и тем и другим. Из этих модифицированных прототипов и состоит файл на языке описания интерфей­са (interface definition language, IDL).

После создания файла IDL он транслируется компилятором MIDL, кото­рый создает процедуры-заглушки для клиентской и серверной стороны, а также заголовочные файлы для подключения к приложению. При компоновке клиент­ского приложения с файлом процедур-заглушек разрешаются все ссылки на удаленные процедуры. Затем, используя аналогичный процесс, удаленные про­цедуры устанавливаются на удаленной машине. Программисту, желающему толь­ко вызывать существующее приложение RPC, нужно лишь написать программу для клиентской части и скомпоновать ее с локальной библиотекой RPC периода выполнения.

Библиотека RPC периода выполнения использует для взаимодействия с транспортным протоколом единый интерфейс доступа к транспорту RPC

Рис. 9-17. Библиотека RPC периода выполнения.

(RPC transport provider interface). Этот интерфейс служит тонкой прослойкой между средством RPC и транспортом, которая отображает операции RPC в фун­кции, предоставляемые транспортом. Средство RPC для Windows NT предостав­ляет DLL компонентов доступа к транспорту для именованных каналов, NetBIOS, TPC/IP и DECnet. Поддержку других транспортов можно ввести, написав допол­нительные DLL. Таким же образом средство RPC поддерживает работу с различ­ными сетевыми средствами защиты. Кроме DLL компонентов доступа к транс­порту, между средством RPC и сетью могут быть добавлены DLL защиты. В отсут­ствие других DLL защиты программное обеспечение RPC для Windows NT ис­пользует встроенную защиту именованных каналов.

Для того, чтобы средство RPC могло взаимодействовать с приложениями RPC на другой машине, они должны использовать одни и те же соглашения RPC. Microsoft RPC соответствует стандарту RPC, установленному Open Software Foun­dation (OSF) в спецификации среды распределенных вычислений (DCE). Таким образом, приложения, написанные с использованием Microsoft RPC, могут вызы­вать удаленные процедуры на других системах, использующих стандарт DCE.

Большинство сетевых сервисов Windows NT являются приложениями RPC, а это значит, что они могут вызываться как локальными процессами, так и про­цессами на удаленных машинах. Таким образом, удаленный клиентский компь­ютер может обращаться к сервисам Вашего сервера для просмотра списка со­вместно используемых ресурсов, открытых файлов, очередей печати или актив­ных пользователей на этом сервере, либо он может вызвать сервис сообщений для посылки Вам сообщения (конечно, при наличии соответствующих прав дос­тупа).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]