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

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

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

Послідовність подій Клієнт викликає клієнтський стабhttps://stackoverflow.com/a/69591570/816449. Робиться виклик локальної процедури, під час якої параметри записується у стек. Стаб збирає параметри в повідомлення і викликає системний процес надсилання повідомлення. Локальна операційна система клієнта надсилає повідомлення з клієнтської машини до сервера. Локальна операційна система сервера передає прийняті пакети до стабу сервера. Стаб сервера розпаковує параметри з повідомлення. Наприкінці, серверний стаб викликає процедуру на сервері. Відповідь формується та надсилається за цією ж послідовністю, але у зворотньому напрямку

Див. також Distributed Component Object Model Віддалене адміністрування Взаємодія між процесами CRUD REST Мова опису інтерфейсів

Примітки

Джерела

Remote Procedure Calls (RPC) — A tutorial on ONC RPC by Dr Dave Marshall of Cardiff University]