Кіріспе
Бағдарламалық жасақтамаға қашықтан процедураны орындауға мүмкіндік беретін механизм. Таратылған есептеуде, қашықтан процедураны шақыру (RPC) – компьютерлік бағдарламаның басқа адрестік кеңістікте (көбінесе ортақ компьютерлік желідегі басқа компьютерде) процедураны (қосалқы бағдарламаны) орындауына себеп болуы, бұл бағдарламашы қашықтан өзара әрекеттесудің егжей-тегжейін нақты жазбай, әдеттегі (жергілікті) процедура шақыру сияқты жазылады. Яғни, бағдарламашы субпрограмма жергілікті түрде орындалса да, қашықтан орындалса да, бірдей код жазады. Бұл клиент-сервер өзара әрекеттесуінің бір түрі (шақырушы – клиент, орындаушы – сервер), әдетте сұрау-жауап хабар алмасу жүйесі арқылы іске асырылады. Объектіге бағытталған бағдарламалау парадигмасында RPC қашықтықтан әдіс шақыру (RMI) арқылы бейнеленеді. RPC моделі орналасу туралы ашықтықтың белгілі бір деңгейін білдіреді, атап айтқанда, процедураны шақыру жергілікті немесе қашықтан болсын, көбінесе бірдей болады, бірақ әдетте толықтай сәйкес емес, сондықтан жергілікті шақыруларды қашықтан шақырулардан ажырату қажет. Қашықтан шақырулар әдетте жергілікті шақырулардан әлдеқайда баяу және сенімсіз болады, сондықтан оларды ажырату маңызды. RPC процестер аралық байланыс (IPC) нысаны болып табылады, себебі әртүрлі процестер әртүрлі адрестік кеңістіктерге ие: егер бір хост машинасында болса, физикалық адрестік кеңістік бірдей болғанымен, олардың виртуалды адрестік кеңістіктері әртүрлі болады; ал егер олар әртүрлі хосттарда болса, физикалық адрестік кеңістік те әртүрлі болады. Бұл тұжырымдаманы іске асыру үшін көптеген түрлі (көбінесе үйлесімсіз) технологиялар қолданылған.
In distributed computing, a Remote Procedure Call (RPC) is when a computer program causes a procedure (subroutine) to execute in a different address space (commonly on another computer on a shared computer network), which is written as if it were a normal (local) procedure call, without the programmer explicitly writing the details for the remote interaction. That is, the programmer writes essentially the same code whether the subroutine is local to the executing program, or remote. This is a form of client–server interaction (caller is client, executor is server), typically implemented via a request–response message passing system. In the object oriented programming paradigm, RPCs are represented by remote method invocation (RMI). The RPC model implies a level of location transparency, namely that calling procedures are largely the same whether they are local or remote, but usually, they are not identical, so local calls can be distinguished from remote calls. Remote calls are usually orders of magnitude slower and less reliable than local calls, so distinguishing them is important. RPCs are a form of inter process communication (IPC), in that different processes have different address spaces: if on the same host machine, they have distinct virtual address spaces, even though the physical address space is the same; while if they are on different hosts, the physical address space is different. Many different (often incompatible) technologies have been used to implement the concept.
Тарих және шығу тегі
Сұрау-жауап протоколдары 1960 жылдардың соңында пайда болған, алғашқы таратылған есептеулер кезінде, 1970 жылдарда желілік операциялар моделі ретінде қашықтан процедура шақыруларының теориялық ұсыныстары жасалды, ал практикалық іске асыру 1980 жылдардың басында жүзеге асты. Брюс Джей Нельсон 1981 жылы «қашықтан процедура шақыруы» терминін енгізгенімен белгілі. Қазіргі операциялық жүйелерде қолданылатын қашықтан процедура шақыруларының тамыры RC 4000 көпбағдарламалық жүйесіне дейін жетеді, ол процестерді синхрондау үшін сұрау-жауап байланыс протоколын қолданды. Желілік операцияларды қашықтан процедура шақырулары ретінде қарау идеясы кем дегенде 1970 жылдарға, ARPANET-тің алғашқы құжаттарына дейін барып жетеді. 1978 жылы Пер Бринч Хансен «сыртқы сұрауларға» негізделген, процестер арасындағы процедура шақыруларынан тұратын таратылған есептеулер тілі – Таратылған процестерді ұсынды. Ең алғашқы практикалық іске асырулардың бірі 1982 жылы Брайан Рэнделл және оның әріптестері UNIX машиналары арасындағы Ньюкасл байланысы үшін жасалды. Осыған ілесіп, Эндрю Биррелл мен Брюс Нельсонның Xerox PARC компаниясының Cedar ортасында жасаған «Люпин» пайда болды. Люпин автоматты түрде штрихтарды жасап, қауіпсіз байланысты қамтамасыз етті және байланыс үшін тиімді протоколды қолданды. RPyC асинхронды шақыруларды қолдаумен RPC механизмдерін Python тілінде іске асырады. Бөлінген Ruby (DRb) Ruby бағдарламаларына бір машинада немесе желіде бір-бірімен байланысуға мүмкіндік береді. DRb процестер арасында командалар мен деректерді беру үшін қашықтан әдіс шақыруын (RMI) пайдаланады. Erlang процеске бағдарланған және таратуды және RPC-ді түйіндер мен жергілікті процестер арасында хабар алмасу арқылы табиғи түрде қолдайды. Elixir Erlang VM-нің үстіне салынған және процестер арқылы (Elixir/Erlang процестері, емес операциялық жүйе процестері) бір желіде байланысты автоматты түрде қамтамасыз етеді. Google-дің Rust RPC Tarpc фреймворкі әзірлеушілерге протобуфты пайдаланудың орнына Rust-тың құрылымдары мен қасиеттерін пайдаланып хабарламалардың құрылымын анықтауға мүмкіндік береді.
Қолданбаға тән
Action Message Format (AMF) Adobe Flex бағдарламаларының AMF қолдауы бар серверлік бөліктермен немесе басқа қолданбалармен байланысуына мүмкіндік береді. Қашықтықтанғы функция шақыру (RFC) – SAP жүйелері арасындағы байланыс үшін стандартты SAP интерфейсі. RFC қашықтағы жүйеде орындалатын функцияны шақырады.