УДАЛЕННЫЙ ВЫЗОВ ПРОЦЕДУР Методическое пособие по дисциплине «Программное обеспечение компьютерных сетей и информационных систем»
Средство удаленного вызова процедур (RPC, Remote Procedure Call позволяет создавать приложения, состоящие из произвольного числа процедур, часть которых выполняется локально (на данном компьютере), а часть – по сети на удаленных компьютерах. Таким образом, RPC представляет модель работы с сетью, ориентированную на процедуры, а не на транспорт (передачу данных), что позволяет упростить разработку распределенных приложений.
В ОС WindowsNT сетевая операция начинается с того, что приложение инициирует запрос операции удаленного ввода-вывода. ОС обрабатывает запрос, передавая его директору (выступающему в качестве удаленной файловой системы). Традиционно сетевое ПО основывается на модели ввод- вывод.
После обработки запроса и возврата данных удаленной файловой системой сетевая плата генерирует прерывание. Ядро ОС обрабатывает это прерывание, а исходная программа ввода- вывода возвращает результаты вызывающей программе.
PRC использует совершенно другой подход: Приложения RPC структурно выглядят так же, как и обычные приложения – имеют главную программу, которая с целью выполнения специфических задач вызывает необходимые процедуры (рис.5.1).
Отличие между приложениями RPC и обычными программами Отличие между приложениями RPC и обычными программами состоит в том, что некоторые процедуры в приложении RPC выполняются на удаленных компьютерах, а другие - локально (рис.5.2).
Процедуры выглядят локальными Для самого приложения RPC все процедуры выглядят локальными, таким образом: нет необходимости заставлять программиста писать код для передачи запроса на вычисления, ввод-вывод по сети, работы с сетевыми протоколами, обработки сетевых ошибок, ожидания результатов и т.п. – программное обеспечение RPC для WindowsNT выполняет эти задачи автоматически и для любых доступных сетевых протоколов.
При проектировании приложения RPC программист должен (самостоятельно) решить, какие процедуры должны выполняться локально, а какие удаленно. Например, при решении сводимых к операциям с матрицами большой размерности задач (типа метода конечных элементов, конечно разностные задачи и др.) выгодно использовать мощности специальных ЭВМ с ориентированными на векторные операции процессорами (например,супер-ЭВМ серии CRAY) - если, конечно, данная рабочая станция подключена к подобной супер-ЭВМ.
Функционирует приложение RPC следующим образом В процессе работы оно вызывает как локальные, так и отсутствующие (недоступные) на локальной машине процедуры. Для обработки последнего случая приложение связывается с локальной DLL, содержащей по одной процедуре-заглушке (stub procedure) для каждой из удаленной процедур.
Процедура-заглушка имеет то же имя и интерфейс, что и удаленная процедура, однако вместо выполнения соответствующей операции заглушка принимает передаваемые ей параметры и выполняет операцию их преобразования (marsaling) для передачи по сети
Под преобразованием параметров понимается Под преобразованием параметров понимается их упорядочение и упаковка в определенные формат, пригодный для пересылки по сети (например, разрешение ссылок и копирование всех структур данных, на которые ссылаются указатели).
Далее заглушка вызывает процедуры библиотеки RPC периода выполнения (Run Time); они находят компьютер, на котором расположены удаленные процедуры, определяют используемые этим компьютером механизмы транспорта и посылают запрос (при помощи локального программного обеспечения сетевого транспорта).
Когда удаленный компьютер (выполняющий в этот момент функцию сервера) получает запрос RPC, он выполняет обратное преобразование параметров, реконструирует оригинальный вызов процедуры и осуществляет фактический вызов ее. По окончании работы сервер выполняет обратную последовательность действий для возврата результатов вызывающей программе.
На рис.5.3 схематично показано сетевое взаимодействие клиентского компьютера с серверными ЭВМ с использование RPC- библиотеки периода выполнения.
Кроме библиотеки периода выполнения, в состав средств RPC фирмы Microsoft Corp. входит компилятор MIDL (Microsoft Interface Definition Language - язык описания интерфейса фирмы Microsoft). Язык описания интерфейса фирмы Microsoft
Использование компилятора MIDL упрощает написание приложений RPC. Программист пишет набор обычных функций (например, на языке C или C++), описывающих удаленные процедуры, затем он добавляет к этим прототипам некоторую дополнительную информацию (например, уникальный для данной сети идентификатор пакета процедур и номер версии плюс атрибуты, указывающие, является ли параметр процедуры входом, выходом или и тем и другим).
(IDL, Interface Definition Language). Фактически из этих модифицированных прототипов и состоит файл на языке описания интерфейса (IDL, Interface Definition Language).
После создания файла IDL он транслируется компилятором MIDL, После создания файла IDL он транслируется компилятором MIDL, который и создает процедуры- заглушки для клиентской и серверной стороны, а также заголовочные файлы для подключения к приложению. При компоновке клиентского приложения совместно с файлом процедур-заглушек разрешаются все ссылки на удаленные процедуры. Используя аналогичный процесс, удаленные процедуры устанавливаются на серверной машине. Если программисту требуется только вызывать существующее приложение RPC, ему необходимо написать лишь программу для клиентской части и скомпоновать ее с локальной библиотекой RPC периода выполнения
Библиотека RPC периода выполнения использует для взаимодействия с транспортным протоколом единый интерфейс доступа к транспорту RPC (RPC transport interface). Этот интерфейс служит прослойкой между средством RPC и транспортным протоколом, которая отображает операции RPC в функции, предоставляемые транспортным протоколом.
Средство RPC для WindowsNT предоставляет DLL-компоненты доступа к транспортному протоколу для именованных каналов, NetBIOS, TCP/IP и DECnet, имеется возможность разработки дополнительных DLL с целью поддержки других транспортных протоколов. Сходным образом средство RPC поддерживает работу с различными средствами защиты (при отсутствии нештатных DLL защиты программное обеспечение RPC для WindowsNT использует встроенную защиту именованных каналов).
Для обеспечения взаимодействия средства RPC с приложениями RPC на другой ЭВМ они должны использовать одинаковые соглашения RPC. Microsoft RPC соответствует стандарту RPC, установленному Open Software Foundation (OSF) в спецификации среды распределенных вычислений (DCE, Distribute Calculation Environment). Таким образом, написанные с использованием Microsoft RPC приложения могут вызывать удаленные процедуры на других системах, использующих стандарт DCE.
Большинство сетевых сервисов WindowsNT являются приложениями RPC и поэтому могут вызываться как локальными процессами, так и процессами на удаленных машинах. Это значит, что удаленный компьютер может обращаться к сервисам данной ЭВМ для просмотра совместно используемых ресурсов, открытых файлов, очередей печати или активных пользователей на этом сервере, либо он может вызвать сервис сообщений для посылки сообщений (при наличии соответствующих прав доступа).
Существуют более совершенные механизмы реализации вызова удаленных процедур - асинхронные вызовы удаленных функций (ARPC, Asynchronous Remote Procedure Cal), позволяющие на основе применения функций отклика (call-back function) избежать приостановки выполнения прикладной программы на локальной машине. Для связи с удаленными системами RPC может использовать сервис NetBIOS, Windows Sockets и другие доступные средства (например, именованные каналы для WindowsNT).
Для вызова процедур, расположенных на том же компьютере, что и вызывающая программа, и обмена информацией с ними служат механизмы вызова локальных процедур (LPC, Local Procedure Call) или упрощенного вызова удаленных процедур (LRPC, Lightweight Remote Procedure Call). Однако вышеуказанные средства доступны лишь в WindowsNT.
Резюмируя сказанное, следует признать, что предложенная Microsoft RPC-методика, значительно упрощая создание сетевых приложений (путем сокрытия от программиста многих рутинных действий), все же весьма далека от совершенства. В самом деле, для изменения многих параметров сети приходится вновь перекомпилировать приложение, изменяя должным образом параметры IDL.
На самом деле RPC-подход, конечно, является компромиссом между современным уровнем (не очень хорошо совместимых между собой) локальных операционных систем и (нереализованной пока) распределенной ОС.
Активно продвигаемая в настоящее время технология dotNet фирмы Microsoft Corp. позволяет просто и единообразно (невзирая на используемый язык программирования) создавать сетевые приложения и контролировать их исполнение
Литература 1. Чепмен Д. и др. Разработка InterNet- приложений в DELPHI 2. -Киев.:DiaSoft, c. 2. Елманова Н.З. Borland C++Builder (архитектура клиент/сервер, многозвенные системы, InterNet- приложения). -M.: Диалог-МИФИ, c. 3. Зайцев С.С. Описание и реализация протоколов сетей ЭВМ. -М.: Наука, c. 4. Клейнрок Л. Вычислительные системы с очередями. Пер. с англ. -М.: Мир, c. 5. Фролов А.В., Фролов Г.В. Локальные сети персональных компьютеров(монтаж сети, установка программного обеспечения). Библиотека системного программиста, т.7. M.: Диалог-МИФИ, c.