همچنین در برنامهنویسی چند نخی4، استفاده از چند نخ باعث میشود عمل فراخوانی از راه دور تابع یا پروسیجر بهصورت موازی هم انجام شود.
آرپیسی از مدل محاسباتی مشتری™خدمتگذار استفاده میکند و این موضوع باعث میشود برنامهنویسی بهاین روش سادهتر و قدرتمندتر باشد.
چطور کار میکند؟
یک فراخوان از راه دور پروسیجر، به یک فراخوانی تابع میماند. همانند فراخوانی تابع، وقتی یک فراخوانی از راه دور تولید میشود، آرگومان فراخواننده به پروسیجر راه دور فرستاده میشود، فراخواننده منتظر پاسخی از سوی پروسیجر راه دور میماند. همانطور که در شکل میبینید، روال انجام شده برای ارسال یک فراخوان راه دور و بازگشت نتیجه رسم شده است. مشتری یک پروسیجر را صدا میزند که درخواستی به سرور میدهد و صبر میکند. این نخ پردازشی تا زمانی که پاسخی دریافت نشده یا زمان انتظار برای پاسخ سر برسد، بلوکه خواهد شد. وقتی درخواستی میرسد، سرور روتین توزیعکننده5 را صدا میزند که درخواست فعلی را انجام دهد و پاسخ را به مشتری میفرستد. بعد از کامل شدن آرپیسی، برنامه مشتری ادامه پیدا میکند. آرپیسی بهطور خاص از برنامههای تحت شبکه پشتیبانی میکند.
تاریخچه و اصلیت
ایده فراخوانی از راه دور پروسیجرها، آنطور که در 707 RFC آمده است، به اوایل سال 1976 بر میگردد. یکی از نخستین استفادههای تجاری از آرپیسی توسط زیراکس و تحت نام «کوریر» در سال 1981 بود. اولین پیادهسازی محبوب آرپیسی در یونیکس، آرپیسی «سان» بود که امروزه بهنام ONC RPC شناخته میشود و بهعنوان پایهای برای سیستم فایل شبکه6«سان» استفاده میشود. ONC RPC هنوز بهطور گستردهای در بسترهای مختلفی استفاده میشود.
یکی دیگر از پیادهسازیهای اولیه یونیکسی آن متعلق به سیستم محاسبات شبکهای7آپولو کامپیوتر بود. NCS بعدا در بنیانگذاری DCE/RPC نقش داشت که بهعنوان استاندارد آرپیسی بنیاد منبعباز استفاده میشود. یک دهه بعد، مایکروسافت از همین تکنیک استفاده کرد و آرپیسی مایکروسافت (MSRPC) را بر اساس همین مکانیزم منتشر کرد. مایکروسافت همچنین از DCOM روی آرپیسی خود استفاده کرد. DCOMفناوری دیگری ابداع مایکروسافت بود که بهبرنامهها اجازه میداد از یکدیگر برای اجرا استفاده کنند.
انتقال پیغام
آرپیسی یکی از معروفترین و محبوبترین پارادایمهای پیادهسازی مدل مشتری™خدمتگذار در محاسبات توزیعشده8است. فراخوانی توسط مشتری ایجاد شده و پیغام درخواستی به سرور مشخصی ارسال میشود تا پروسیجر مشخصی را که از طریق پارامترهای ارسالی مشخص شده است، اجرا کند. پاسخ به برنامه فراخواننده بر میگردد و برنامه کار خود را در میان دیگر پروسسها دنبال میکند. در پیادهسازیهای مختلف، چگونگی روال پیادهسازی یک فراخوانی تفاوت دارد و باعث ایجاد پروتکلهایی غیرهمخوان با یکدیگر شده است. بهیاد داشته باشید که وقتی سرور در حال پردازش فراخوانی است، مشتری بلوکه شده است. (یعنی تا زمانی که پردازش آن تمام نشود، اجرای خود را ادامه نخواهد داد.)
یک تفاوت بسیار مهم میان فراخوانی راه دور و فراخوانی محلی، این است که فراخوانی راه دور میتواند بهدلیل مشکلات اتصال شبکه، دچار مشکل شود. همچنین فراخواننده عموما باید بدون آنکه بداند پروسیجر حقیقتا صدا زده شده است یا نه، با این مشکلات دست و پنجه نرم کند. پروسیجرهای خنثی (آنهایی که اگر بیشتر از یک بار صدا زده شوند تاثیر خاصی ندارند) بهسادگی مدیریت میشوند، اما همواره این مشکل را باقی میگذارند که کدی که فراخوان را انجام میدهد اغلب باید بالاجبار برای سیستمهای سطح پایین نوشته شود.
XML-RPC
یکی از پیادهسازیهای نوین RPC است که طی آن،اجازه میدهد نرمافزارهایی که روی سیستمهای عامل مختلف و در بسترهای محیطی مختلف وجود دارند، روی اینترنت نسبت به فراخوانی پروسیجر اقدام کنند.
این روش از HTTP برای پروتکل انتقال داده و از XML برای رمزگذاری محتویات درخواست استفاده میکند. XML-RPC تا حد امکان ساده طراحی شده است، اما با این حال میتوان ساختمانهای پیچیدهدادهای را از طریق آن، انتقال داد، پردازش کرد یا بازگرداند. این روش در سال 1998 توسط دیو واینر از شرکت نرمافزاری یوزرلند و مایکروسافت خلق شد. این استاندارد امروزه تکامل یافته و به چیزی که امروزه با نام SOAP معروف است، تبدیل شده است.
منابع
http://en.wikipedia.org/wiki/Remote_procedurecall
پینوشتها
Remote Procedure Call.1
Inter-process Communication.2
Address Space.3
Multi-Thread.4
Dispatcher.5
NFS: Network File System (Protocol).6
Network Computing System.7
Distributed Computing.8
امیربهاالدین سبطالشیخ
در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم