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

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

Удалённый вызов процедур (или Вызов удалённых процедур) (от англ. Remote Procedure Call (RPC)) — класс технологий, позволяющих компьютерным программам вызывать функции или процедуры в другом адресном пространстве (как правило, на удалённых компьютерах). Обычно, реализация RPC технологии включает в себя два компонента: сетевой протокол для обмена в режиме клиент-сервер и язык сериализации объектов (или структур, для необъектных RPC). Различные реализации RPC имеют очень отличающуюся друг от друга архитектуру и разнятся в своих возможностях: одни реализуют архитектуру SOA, другие CORBA или DCOM. На транспортном уровне RPC используют в основном протоколы TCP и UDP, однако, некоторые построены на основе HTTP (что нарушает архитектуру ISO/OSI, так как HTTP изначально не транспортный протокол).

Содержание

Реализации

Существуют множество технологий, обеспечивающих RPC:

  • Sun RPC (бинарный протокол на базе TCP и UDP и XDR) RFC-1831 второе название ONC RPC RFC-1833
  • .NET Remoting (бинарный протокол на базе TCP, UDP, HTTP)
  • SOAP — Simple Object Access Protocol (текстовый протокол на базе HTTP) см. спецификацию: RFC-4227
  • XML RPC (текстовый протокол на базе HTTP) см. спецификацию: RFC-3529
  • Java RMI — Java Remote Method Invocation — см. спецификацию: http://java.sun.com/j2se/1.5.0/docs/guide/rmi/index.html
  • JSON-RPC— JavaScript Object Notation Remote Procedure Calls (текстовый протокол на базе HTTP) см. спецификацию: RFC-4627
  • DCE/RPC — Distributed Computing Environment / Remote Procedure Calls (бинарный протокол на базе различных транспортных протоколов, в том числе TCP/IP и Named Pipes из протокола SMB/CIFS)
  • DCOM — Distributed Component Object Model известный как MSRPC Microsoft Remote Procedure Call или «Network OLE» (объектно-ориентированное расширение DCE RPC, позволяющее передавать ссылки на объекты и вызывать методы объектов через таковые ссылки)
  • Routix.RPC
  • ZeroC ICE

Принцип

Идея вызова удалённых процедур (Remote Procedure Call — RPC) состоит в расширении хорошо известного и понятного механизма передачи управления и данных внутри программы, выполняющейся на одной машине, на передачу управления и данных через сеть. Средства удалённого вызова процедур предназначены для облегчения организации распределённых вычислений и создания распределенных клиент-серверных информационных систем. Наибольшая эффективность использования RPC достигается в тех приложениях, в которых существует интерактивная связь между удалёнными компонентами с небольшим временем ответов и относительно малым количеством передаваемых данных. Такие приложения называются RPC-ориентированными.

Характерными чертами вызова удалённых процедур являются:

  • Асимметричность, то есть одна из взаимодействующих сторон является инициатором;
  • Синхронность, то есть выполнение вызывающей процедуры приостанавливается с момента выдачи запроса и возобновляется только после возврата из вызываемой процедуры.

Реализация удалённых вызовов существенно сложнее реализации вызовов локальных процедур. Можно обозначить следующие проблемы и задачи, которые необходимо решить при реализации RPC:

  • Так как вызывающая и вызываемая процедуры выполняются на разных машинах, то они имеют разные адресные пространства, и это создает проблемы при передаче параметров и результатов, особенно если машины находятся под управлением различных операционных систем или имеют различную архитектуру (например, используется прямой или обратный порядок байтов). Так как RPC не может рассчитывать на разделяемую память, то это означает, что параметры RPC не должны содержать указателей на ячейки нестековой памяти и что значения параметров должны копироваться с одного компьютера на другой. Для копирования параметров процедуры и результата выполнения через сеть выполняется их сериализация.
  • В отличие от локального вызова удалённый вызов процедур обязательно использует транспортный уровень сетевой архитектуры (например TCP), однако это остается скрытым от разработчика.
  • Выполнение вызывающей программы и вызываемой локальной процедуры в одной машине реализуется в рамках единого процесса. Но в реализации RPC участвуют как минимум два процесса — по одному в каждой машине. В случае, если один из них аварийно завершится, могут возникнуть следующие ситуации: при аварии вызывающей процедуры удалённо вызванные процедуры станут «осиротевшими», а при аварийном завершении удалённых процедур станут «обездоленными родителями» вызывающие процедуры, которые будут безрезультатно ожидать ответа от удалённых процедур.
  • Существует ряд проблем, связанных с неоднородностью языков программирования и операционных сред: структуры данных и структуры вызова процедур, поддерживаемые в каком-либо одном языке программирования, не поддерживаются точно так же во всех других языках. Таким образом имеется проблема совместимости, до сих пор не решённая ни с помощью введения одного общепринятого стандарта, ни с помощью реализации нескольких конкурирующих стандартов на всех архитектурах и во всех языках.

Подсистемы

  • Транспортная подсистема
— управление исходящими и входящими соединениями.
— поддержка понятия «граница сообщения» для транспортных протоколов, не поддерживающих его непосредственно (TCP).
— поддержка гарантированной доставки для транспортных протоколов, не поддерживающих ее непосредственно (UDP).
  • Пул потоков (только для вызываемой стороны). Предоставляет контекст выполнения для вызванного по сети кода.
  • Маршалинг (также называется «сериализация»). Упаковка параметров вызовов в поток байт стандартным образом, не зависящим от архитектуры (в частности, от порядка байт в слове). В частности, ему могут подвергаться массивы, строки и структуры, на которые указывают параметры-указатели.
  • Шифрование пакетов и наложение на них цифровой подписи.
  • Аутентификация и авторизация. Передача по сети информации, идентифицирующей субъект, осуществляющий вызов.

В некоторых реализациях RPC (.NET Remoting) границы подсистем являются открытыми полиморфными интерфейсами, и возможно написать свою реализацию почти всех перечисленных подсистем. В других реализациях (DCE RPC в Windows) это не так.

См. также

Ссылки

Более полно на unix.org.ua



Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное


Смотреть что такое "Удалённый вызов процедур" в других словарях:

  • удалённый вызов процедур — Протокол, позволяющий программе на одном компьютере выполнить некоторый программный код на другом компьютере; причём от создателя программы не требуется знание подробностей механизма взаимодействия между компьютерами. RPC является… …   Справочник технического переводчика

  • Remote Procedure Call — Удалённый вызов процедур (или Вызов удалённых процедур) (от англ. Remote Procedure Call (RPC))  класс технологий, позволяющих компьютерным программам вызывать функции или процедуры в другом адресном пространстве (как правило, на удалённых… …   Википедия

  • Брандмауэр Windows — Компонент Microsoft Windows Детали Другие названия …   Википедия

  • RMI — Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей. RMI (англ. Remote Method Invocation) программный …   Википедия

  • Internet Communications Engine — Internet Communications Engine, или Ice, является объектной системой промежуточного слоя (middleware), использующей механизм удаленного вызова процедур. Данная система разрабатывается ZeroC и распространяется под двойной лицензией: GNU GPL или… …   Википедия

  • Интерфейс — У этого термина существуют и другие значения, см. Интерфейс (значения). Интерфейс (англ. interface  сопряжение, поверхность раздела, перегородка)  граница раздела двух систем, устройств или программ, определённая их… …   Википедия

  • Маршалинг — (от англ. marshal  упорядочивать), по смыслу похож на сериализацию, в информатике  процесс преобразования представления объекта в памяти в формат данных, пригодный для хранения или передачи. Обычно применяется, когда данные… …   Википедия

  • Microsoft Interface Definition Language — (MIDL)  текстовый язык описания интерфейсов, разработанный корпорацией Microsoft на основе DCE/RPC IDL. При использовании языка MIDL совместно с RPC требуется хорошее знание языков программирования C/C++ и основных принципов RPC. При… …   Википедия

  • блок сообщений сервера — Универсальный прикладной протокол (L7), используемый для передачи файлов и печати с аутентификацией в среде Windows. Служит базой для различных служб, включая Сетевое окружение и Удалённый вызов процедур. В то время как SMB работает по схеме… …   Справочник технического переводчика

  • Стаб (распределенные вычисления) — Под cтабом в распределённых вычислениях понимается фрагмент программного кода, используемый для конвертации параметров, передаваемых при помощи удаленных вызовов процедур (RPC). Главная идея RPC заключается в предоставлении возможности локальному …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»