~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 653DDC0D54CA9D9A72CAF9F9127BAE45__1718664780 ✰
Заголовок документа оригинал.:
✰ Remote procedure call - Wikipedia ✰
Заголовок документа перевод.:
✰ Удаленный вызов процедуры — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Remote_procedure_call ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/65/45/653ddc0d54ca9d9a72caf9f9127bae45.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/65/45/653ddc0d54ca9d9a72caf9f9127bae45__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 07:50:57 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 18 June 2024, at 01:53 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Удаленный вызов процедуры — Википедия Jump to content

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

Из Википедии, бесплатной энциклопедии

В распределенных вычислениях удаленный вызов процедуры ( RPC ) — это когда компьютерная программа вызывает выполнение процедуры (подпрограммы) в другом адресном пространстве (обычно на другом компьютере в общей компьютерной сети ), которая записывается так, как если бы это был обычный вызов процедуры (RPC). (локальный) вызов процедуры без явного указания программистом деталей удаленного взаимодействия. То есть программист пишет по существу один и тот же код независимо от того, является ли подпрограмма локальной по отношению к исполняемой программе или удаленной. Это форма взаимодействия клиент-сервер (вызывающая сторона — клиент , исполнитель — сервер ), обычно реализуемая через запрос-ответ систему передачи сообщений . В парадигме объектно-ориентированного программирования RPC представлены удаленным вызовом методов (RMI). Модель RPC предполагает определенный уровень прозрачности местоположения, а именно, что процедуры вызова во многом одинаковы, независимо от того, являются ли они локальными или удаленными, но обычно они не идентичны, поэтому локальные вызовы можно отличить от удаленных вызовов. Удаленные вызовы обычно на несколько порядков медленнее и менее надежны, чем местные вызовы, поэтому важно различать их.

RPC — это форма межпроцессного взаимодействия (IPC), в которой разные процессы имеют разные адресные пространства: если они находятся на одной хост-машине, они имеют разные виртуальные адресные пространства, даже если физическое адресное пространство одинаковое; а если они находятся на разных хостах, физическое адресное пространство будет разным. Для реализации этой концепции использовалось множество различных (часто несовместимых) технологий.

История и происхождение [ править ]

Протоколы запросов-ответов появились на ранних этапах распределенных вычислений в конце 1960-х годов, теоретические предложения об удаленных вызовах процедур как модели сетевых операций относятся к 1970-м годам, а практические реализации относятся к началу 1980-х годов. Брюсу Джею Нельсону обычно приписывают введение термина «удаленный вызов процедуры» в 1981 году. [1]

Удаленные вызовы процедур, используемые в современных операционных системах, уходят корнями в мультипрограммную систему RC 4000. [2] который использовал протокол связи запрос-ответ для синхронизации процессов. [3] Идея рассматривать сетевые операции как вызовы удаленных процедур восходит, по крайней мере, к 1970-м годам в ранних документах ARPANET . [4] В 1978 году Пер Бринч Хансен предложил «Распределенные процессы» — язык для распределенных вычислений, основанный на «внешних запросах», состоящих из вызовов процедур между процессами. [5]

Одна из самых ранних практических реализаций была реализована в 1982 году Брайаном Рэнделлом и его коллегами для их Newcastle Connection между машинами UNIX. [6] Вскоре за этим последовал «Люпин» Эндрю Биррелла и Брюса Нельсона в среде Cedar в Xerox PARC . [7] [8] [9] Люпин автоматически создавал заглушки, обеспечивая типобезопасные привязки, и использовал эффективный протокол для связи. [8] Одним из первых бизнес-использований RPC была компания Xerox под названием «Courier» в 1981 году. Первой популярной реализацией RPC в Unix был RPC от Sun (теперь называемый ONC RPC), используемый в качестве основы для сетевой файловой системы (NFS).

В 1990-х годах, с ростом популярности объектно-ориентированного программирования , была широко реализована альтернативная модель удаленного вызова методов (RMI), например, в архитектуре Common Object Request Broker Architecture (CORBA, 1991) и удаленном вызове методов Java. Популярность RMI, в свою очередь, упала с развитием Интернета, особенно в 2000-х годах.

Передача сообщений [ править ]

RPC — это протокол запроса-ответа. RPC инициируется клиентом , который отправляет сообщение с запросом на известный удаленный сервер для выполнения указанной процедуры с предоставленными параметрами. Удаленный сервер отправляет ответ клиенту, и приложение продолжает свою работу. Пока сервер обрабатывает вызов, клиент блокируется (он ожидает, пока сервер завершит обработку, прежде чем возобновить выполнение), если только клиент не отправит на сервер асинхронный запрос, например XMLHttpRequest. В различных реализациях существует множество вариаций и тонкостей, что приводит к появлению множества разных (несовместимых) протоколов RPC.

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

Последовательность событий [ править ]

  1. Клиент вызывает клиентскую заглушку. Вызов представляет собой вызов локальной процедуры, параметры которой помещаются в стек обычным способом.
  2. Клиентская заглушка упаковывает параметры в сообщение и выполняет системный вызов для отправки сообщения. Упаковка параметров называется маршаллингом.
  3. Локальная операционная система клиента отправляет сообщение с клиентского компьютера на серверный компьютер.
  4. Локальная операционная система на сервере передает входящие пакеты на заглушку сервера.
  5. Заглушка сервера распаковывает параметры из сообщения. Распаковка параметров называется демаршаллингом.
  6. Наконец, серверная заглушка вызывает серверную процедуру. Ответ прослеживает те же шаги в обратном направлении.

Стандартные контактные механизмы [ править ]

Чтобы позволить различным клиентам получать доступ к серверам, был создан ряд стандартизированных систем RPC. Большинство из них используют язык описания интерфейса (IDL), позволяющий различным платформам вызывать RPC. Затем файлы IDL можно использовать для создания кода для взаимодействия между клиентом и серверами.

Аналоги [ править ]

Известные реализации и аналоги RPC включают:

Зависит от языка [ править ]

  • API удаленного вызова методов Java (Java RMI) предоставляет функциональность, аналогичную стандартным методам RPC Unix.
  • Go предоставляет пакет rpc для реализации RPC с поддержкой асинхронных вызовов.
  • Сетевые объекты Модулы-3, которые легли в основу Java RMI. [10]
  • RPyC реализует механизмы RPC на Python с поддержкой асинхронных вызовов.
  • Распределенный Ruby (DRb) позволяет программам Ruby взаимодействовать друг с другом на одном компьютере или по сети. DRb использует удаленный вызов методов (RMI) для передачи команд и данных между процессами.
  • Erlang ориентирован на процессы и изначально поддерживает распространение и RPC посредством передачи сообщений между узлами и локальными процессами.
  • Elixir построен на базе виртуальной машины Erlang и обеспечивает взаимодействие процессов (процессов Elixir/Erlang, а не процессов ОС) в одной и той же сети «из коробки» через агентов и передачу сообщений.
  • Платформа Rust RPC от Google Tarpc позволяет разработчикам определять структуру сообщений, используя структуры и свойства Rust, а не protobuf. [11]

Зависит от приложения [ править ]

  • Формат сообщения действия (AMF) позволяет приложениям Adobe Flex взаимодействовать с серверными системами или другими приложениями, поддерживающими AMF.
  • Удаленный вызов функций — это стандартный интерфейс SAP для связи между системами SAP. RFC вызывает функцию, которая должна быть выполнена в удаленной системе.

Общие [ править ]

  • NFS (сетевая файловая система) – один из наиболее известных пользователей RPC.
  • Открытые сетевые вычисления RPC от Sun Microsystems (также известный как Sun RPC)
  • Программа IPC с открытым исходным кодом D-Bus обеспечивает функции, аналогичные CORBA.
  • SORCER предоставляет API и язык, ориентированный на напряжение (EOL) для вызова объединенных методов.
  • XML-RPC — это протокол RPC, который использует XML для кодирования вызовов и HTTP в качестве транспортного механизма.
  • JSON-RPC — это протокол RPC, который использует сообщения в формате JSON.
  • JSON-WSP — это протокол RPC, созданный на основе JSON-RPC.
  • SOAP является преемником XML-RPC и также использует XML для кодирования вызовов на основе HTTP.
  • Платформа распределенных вычислений ZeroC Internet Communications Engine (Ice).
  • Платформа Etch для создания сетевых сервисов.
  • Протокол и платформа Apache Thrift.
  • CORBA обеспечивает удаленный вызов процедур через промежуточный уровень, называемый брокером объектных запросов .
  • Libevent предоставляет основу для создания серверов и клиентов RPC. [12]
  • Windows Communication Foundation — это интерфейс прикладного программирования в среде .NET для создания подключенных сервис-ориентированных приложений.
  • Microsoft .NET Remoting предлагает возможности RPC для распределенных систем, реализованных на платформе Windows. Он был заменен WCF .
  • Microsoft DCOM использует MSRPC, основанный на DCE/RPC.
  • Распределенная вычислительная среда Open Software Foundation DCE/RPC (также реализованная Microsoft).
  • Пакет Google Protocol Buffers (protobufs) включает язык определения интерфейса, используемый для его протоколов RPC. [13] с открытым исходным кодом в 2015 году как gRPC. [14]
  • WAMP объединяет RPC и публикацию-подписку в единый протокол, независимый от транспорта.
  • Google Web Toolkit использует асинхронный RPC для связи со службой сервера. [15]
  • Apache Avro предоставляет RPC, где схемы обмена клиентом и сервером при подтверждении соединения и генерации кода не требуются.

См. также [ править ]

Ссылки [ править ]

  1. ^ Брюс Джей Нельсон (май 1981 г.). Удаленный вызов процедур (кандидатская диссертация). Исследовательский центр Xerox в Пало-Альто. ПАРК CSL-81-9 (также CMU-CS-81-119).
  2. ^ «Пер Бринч Хансен • Компьютерное общество IEEE» . www.computer.org . Проверено 15 декабря 2015 г.
  3. ^ Бринч Хансен, Пер (1969). Компьютерное программное обеспечение RC 4000: система мультипрограммирования (PDF) . Копенгаген, Дания: Regnecentralen.
  4. ^ Джеймс Э. Уайт (23 декабря 1975 г.). «Высокоуровневая структура совместного использования сетевых ресурсов» . РФК 707 . Исследовательский центр аугментации . дои : 10.17487/RFC0707 . Проверено 11 июля 2011 г.
  5. ^ Бринч Хансен, Пер (ноябрь 1978 г.). «Распределенные процессы: концепция параллельного программирования» (PDF) . Коммуникации АКМ . 21 (11): 934–941. CiteSeerX   10.1.1.107.3108 . дои : 10.1145/359642.359651 . S2CID   11610744 .
  6. ^ Браунбридж, Дэвид Р.; Маршалл, Линдси Ф.; Рэнделл, Брайан (1982). «Связь с Ньюкаслом» (PDF) . Программное обеспечение: практика и опыт . 12 (12): 1147–1162. дои : 10.1002/спе.4380121206 . S2CID   1840438 . Архивировано из оригинала (PDF) 16 августа 2016 г. Проверено 16 августа 2016 г.
  7. ^ Биррелл, Эндрю Д.; Нельсон, Брюс Джей (1984). «Реализация удаленных вызовов процедур» (PDF) . Транзакции ACM в компьютерных системах . 2 : 39–59. дои : 10.1145/2080.357392 . S2CID   11525846 .
  8. ^ Перейти обратно: а б «1994 – Эндрю Биррелл, Брюс Нельсон: Удаленный вызов процедур» . Цитирование премии Software System Award . Ассоциация вычислительной техники . Архивировано из оригинала 2 апреля 2012 года . Проверено 11 июля 2011 г.
  9. ^ «Награда Зала славы СИГОПС» . Специальная группа по интересам по операционным системам . Ассоциация вычислительной техники . Проверено 11 июля 2011 г.
  10. ^ AZ языков программирования: Modula-3 — az языков программирования. Архивировано 5 января 2009 г. в Wayback Machine . Компьютерный мир. Проверено 17 июля 2013 г.
  11. ^ tarpc , Google, 2 ноября 2023 г. , получено 2 ноября 2023 г.
  12. ^ libevent: Главная страница . Обезьянка.орг. Проверено 17 июля 2013 г.
  13. ^ «Буферы протокола — формат обмена данными Google» . Сайт проекта Google . Проверено 1 ноября 2011 г.
  14. ^ «Универсальная платформа RPC с открытым исходным кодом gRPC» . Сайт проекта Google . Проверено 7 сентября 2016 г.
  15. ^ «Набор веб-инструментов Google» . Сайт проекта Google . Проверено 1 ноября 2011 г.

Внешние ссылки [ править ]

  • RFC 5531 — указывает версию 2 ONC RPC (четвертая опубликованная версия RFC).
  • RFC 1831 — указывает версию 2 ONC RPC (третья опубликованная версия RFC).
  • RFC 1057 — указывает версию 2 ONC RPC (вторая опубликованная версия RFC).
  • RFC 1050 — указывает версию 2 ONC RPC (первая опубликованная версия RFC).
  • Удаленные вызовы процедур (RPC) — Учебное пособие по ONC RPC доктора Дэйва Маршалла из Кардиффского университета.
  • Введение в программирование RPC — введение разработчика в RPC и XDR из документации SGI IRIX.
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 653DDC0D54CA9D9A72CAF9F9127BAE45__1718664780
URL1:https://en.wikipedia.org/wiki/Remote_procedure_call
Заголовок, (Title) документа по адресу, URL1:
Remote procedure call - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)