Виклик віддалених процедур

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з Remote Procedure Call)
Перейти до навігації Перейти до пошуку

Виклик віддалених процедур (англ. Remote procedure call, RPC) — протокол, що дозволяє програмі, запущеній на одному комп'ютері, звертатись до функцій (процедур) програми, що виконується на іншому комп'ютері, подібно до того, як програма звертається до власних локальних функцій.

Передача повідомлень

[ред. | ред. код]

RPC працює за принципом протоколів "запит-відповідь" . Виклик ініціюється клієнтом, що надсилає повідомлення віддаленого сервера з запитом щодо виконання заданої процедури з деякими параметрами. Віддалений сервер надсилає відповідь до клієнта і додаток продовжує процесс, що обробляє відповідь. Поки сервер оброблює відповідь, клієнт заблокований (він чекає поки сервер завершить свій процес, перед тим як відновити виконання своєї задачі) що, наприклад, не відбувається при роботі з асинхрооними запитами до сервера, такими як, XMLHttpRequest. Існує дуже багато тонкощів у реалізації цього принципу, що призводить до великого різноманіття (несумісних одне з іншим) RPC протоколів.

Важливий нюанс полягає в тому, що на відміну від локальних викликів, відаленний виклик може не дійти через неочікувані проблеми з мережою. Також, ініціатор виклику може зіткнутись з такими проблемами, не знаючи, що вони виникли. Ідемпотентність процедури (тобто вона не викликає додаткового еффекту, якщо її викликають більше ніж раз) можна зробити, але можуть виникнути додаткові труднощі, тому що процедура викликів зазвичай викорисовує мови низького рівня.

Послідовність подій

[ред. | ред. код]
  1. Клієнт викликає клієнтський стаб[1]. Робиться виклик локальної процедури, під час якої параметри записується у стак.
  2. Стаб збирає параметри в повідомлення і викликає системний процесс надсилання повідомлення.
  3. Локальна операційна система клієнта надсилає повідомлення з клієнтської машини до сервера.
  4. Локальна операційна система сервера передає прийняті пакети до стабу сервера.
  5. Стаб сервера розпаковує параметри з повідомлення.
  6. Наприкінці, серверний стаб викликає процедуру на сервері. Відповідь формується та надсилається за цією ж послідовністю, але у зворотньому напрямку

Див. також

[ред. | ред. код]

Джерела

[ред. | ред. код]

Олифер В. Г., Олифер Н. А. Сетевые операционные системы. — 2. — СПб. : Питер, 2009. — 669 с. — ISBN 978-5-91180-528-9.(рос.)

Remote Procedure Calls (RPC) — A tutorial on ONC RPC by Dr Dave Marshall of Cardiff University}}(англ.)


  1. https://stackoverflow.com/a/69591570/816449