فراخوانی رویه‌ای دوردست: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
جزبدون خلاصۀ ویرایش
جزبدون خلاصۀ ویرایش
خط ۱:
در محاسبه توزیع شده، یک '''فراخوانی رویه ای دور دست''' (به انگلیسی: '''RPC''' ) ، زمانی رخ می دهد که یک برنامه ی کامپیوتری موجب می‌شود یک رویه (ساب روتین) در یک فضای آدرس متفاوت (معمولاً روی کامپیوتر دیگری در یک شبکه مشترک) اجرا شود، این رویه طوری کدگذاری شده است که، انگار یک فراخوانی رویه ای نرمال محلی است، و برنامه نویس به طور آشکار جزئیات مربوط به تعامل دوردست را کد گذاری نمی کند. این بدان معنی است که برنامه نویس اساساً کد مشابهی را می نویسد؛ خواه این سابروتین در محل برنامه ی اجرا شونده باشد، و یا اینکه در دوردست باشد. این فرمی از تعامل کلاینت -سرور است (فرا خواننده کلاینت است و اجرا کننده سرور است) که به طور معمول از طریق یک سیستم انتقال پیغام از نوع درخواست -پاسخ پیاده سازی می شود. RPC ها در الگوی برنامه نویسی شئ گرا، توسط فراخوانی متد دوردست(به انگلیسی:remote method invocation ) نمایش داده می‌شوند. مدل RPC،  نمایانگر سطحی از شفافیت محلی است. به طور خاص این که، رویه‌های فراخواننده، چه محلی باشند و چه دور دست، به میزان زیادی مشابه اند، اما معمولاً آنها عین هم نیستند، بنابراین، می توان فراخوان های محلی را از فراخوانی های دور دست افتراق داد. فراخوان های دوردست معمولاً به مراتب کندتر و نامطمئن تر از فراخوان های محلی هستند، بنابراین افتراق آنها مهم است.<br>
آر پی سی ها، فرمی از ارتباطات بین پروسه‌ای هستند که در آن پروسه های مختلف دارای فضاهای آدرس متفاوت هستند: اگر روی فقط یک ماشین میزبان باشند، آنگاه اگرچه فضای آدرس فیزیکی یکسان است، اما دارای فضاهای آدرس مجازی مجزا هستند ؛ و اگر روی میزبان های مختلف باشند، فضای آدرس فیزیکی متفاوت است. تکنولوژی‌های مختلف زیادی (معمولاً ناسازگار) برای پیاده سازی این مفهوم استفاده شده است.
== فرستادن پیغام ==
 
آر پی سی، یک پروتکل درخواست- پاسخ است. یک RPC، به وسیله کلاینت شروع می شود، که یک پیغام درخواست را به یک سرور دوردست شناخته شده می فرستد، تا یک رویه ی خاص را با پارامترهای داده شده اجرا کند. سرور دوردست پاسخی را به کلاینت می فرستد و نرم افزار، پروسه ی خودش را ادامه می دهد. زمانیکه سرور در حال پردازش فراخوان است، کلاینت مسدود می شود (یعنی منتظر می ماند تا سرور پردازش را به پایان برساند)، سپس اجرا را از سر می‌گیرد. اگر کلاینت یک درخواست ناهمگام به سرور بفرستد، نظیر XMبفرستد،LHttpRequest، آنگاه کلاینت مسدود نمی شود. تفاوت ها و ریزه کاری های مختلف زیادی در پیاده سازی های مختلف وجود دارد، که منجر به طیفی از پروتکل های RPC ناسازگار مختلف می شود. یک تفاوت مهم بین فراخوانی های رویه ای دوردست و فراخوانی های محلی، این است که فراخوانی های دوردست، به دلیل مشکلات شبکه ای غیر قابل پیش بینی، می توانند دچار شکست شوند. همچنین، فراخواننده، به طور کلی، باید بدون اینکه بداند که آیا رویه ی دوردست واقعاً فراخوان شده است یا خیر، چنین شکست هایی را حل و فصل کند. رویه های بی اثر (به انگلیسی: idempotent) (یعنی رویه هایی که اگر بیش از یکبار فراخوان شوند، تاثیر اضافه نخواهند داشت)، به راحتی مدیریت می شوند، اما این دشواری هنوز وجود دارد که کدی که رویه ی دوردست را فراخوانی می کند معمولاً محدود به زیر سیستم های سطح- پایینی می‌شود که به دقت نوشته شده اند.
 
 
 
== منبع ==