Виклик віддалених процедур (англ. Remote procedure call, RPC) — протокол, що дозволяє програмі, запущеній на одному комп'ютері, звертатись до функцій (процедур) програми, що виконується на іншому комп'ютері, подібно до того, як програма звертається до власних локальних функцій.
RPC працює за принципом протоколів "запит-відповідь" . Виклик ініціюється клієнтом, що надсилає повідомлення віддаленого сервера з запитом щодо виконання заданої процедури з деякими параметрами. Віддалений сервер надсилає відповідь до клієнта і додаток продовжує процесс, що обробляє відповідь. Поки сервер оброблює відповідь, клієнт заблокований (він чекає поки сервер завершить свій процес, перед тим як відновити виконання своєї задачі) що, наприклад, не відбувається при роботі з асинхрооними запитами до сервера, такими як, XMLHttpRequest. Існує дуже багато тонкощів у реалізації цього принципу, що призводить до великого різноманіття (несумісних одне з іншим) RPC протоколів.
Важливий нюанс полягає в тому, що на відміну від локальних викликів, відаленний виклик може не дійти через неочікувані проблеми з мережою. Також, ініціатор виклику може зіткнутись з такими проблемами, не знаючи, що вони виникли. Ідемпотентність процедури (тобто вона не викликає додаткового еффекту, якщо її викликають більше ніж раз) можна зробити, але можуть виникнути додаткові труднощі, тому що процедура викликів зазвичай викорисовує мови низького рівня.
Послідовність подій
- Клієнт викликає клієнтський стаб[1]. Робиться виклик локальної процедури, під час якої параметри записується у стак.
- Стаб збирає параметри в повідомлення і викликає системний процесс надсилання повідомлення.
- Локальна операційна система клієнта надсилає повідомлення з клієнтської машини до сервера.
- Локальна операційна система сервера передає прийняті пакети до стабу сервера.
- Стаб сервера розпаковує параметри з повідомлення.
- Наприкінці, серверний стаб викликає процедуру на сервері. Відповідь формується та надсилається за цією ж послідовністю, але у зворотньому напрямку
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.