Remote Procedure Call (invocation) RPC
فراخوانی روال راه دور بسیاری از سیستمها براساس تبادل پیام. سال 1984 توسط بیرل و نلسون: برنامهها بتوانند فراخوانی روالهای ماشینهای دیگر. مشکلات: فضاهای آدرس متفاوت در ماشینهای مختلف. تبادل پارامترها و مقادیر بازگشتی (خصوصا در تفاوت ماشینها). خرابی ماشینها.
فراخوانی روال راه دور ایده اصلی: فراخوانی کننده بیاطلاع از اجرای روال در ماشین دیگری (مشابه محلی). ایجاد مشتری مجازی (Cleint Stub) در مشتری . فراخوانی مشتری مجازی مشابه مشتری اصلی هست. ایجاد سرور مجازی (Server Stub) در سمت سرور. سیستمعامل سرور، پیام را به سرور مجازی میدهد.
client process server process Request Reply service client stub server stub procedure client process server process program
گرفتن پارامترهای فراخوانی. وظایف مشتری مجازی: گرفتن پارامترهای فراخوانی. بسته بندی پارامترها و شناسه روال به صورت پیام. ارسال به سرور. گرفتن پیام(نتیجه) از سرور، استخراج نتایج و تحویل به مشتری. وظایف سرور مجازی: دریافت پیام از مشتری. شناسایی روال و فراخوانی آن با پارامترها. دریافت نتیجه از سرور و بسته بندی نتیجه در پیام و ارسال به مشتری.
فراخوانی روال راه دور (سنکرون)
فراخوانی روال راه دور (آسنکرون)
مشخصات پارامترها توافق بر روی ساختمان داده ساده (صحیح، کاراکتر و اعشاری). توافق بر روی ترتیب بایتها. توافق بر روی فرمت پیام. توافق بر روی نحوه تبادل پیام (TCP , … ). پیاده سازی واسط (Interface): مجموعه ای از روالها که بوسیله مشتری فراخوانی و به وسیله سرور اجرا. واسط با زبان برنامه نویسی مشتری و سرور یا زبان دیگر. زبان تعریف واسط (Interface Description Language = IDL) تقریبا تمامی سیستمهای RPC یک IDL را نیز ارائه میکنند.