فراخوانی از راه دور و میانافزار
فراخوانی از راه دور به یک برنامه امکان میدهد تا یک رویه یا متد را در دستگاه دیگری فراخوانی کند، گویی که محلی است، و میانافزار لایه نرمافزاری است که این قابلیت و انتزاعات مرتبط را بر روی یک شبکه فراهم میکند.
Definition
فراخوانی از راه دور یک انتزاع ارتباطی است که در آن یک کلاینت عملیاتی را بر روی یک فرآیند از راه دور با استفاده از یک رابط فراخوانی رویه محلی فراخوانی میکند، در حالی که میانافزار زیرین مسئول بستهبندی آرگومانها، انتقال، و گزارش خطا است.
Scope
این موضوع شامل فراخوانی رویه از راه دور (RPC) و فراخوانی متد از راه دور، بستهبندی آرگومانها، اتصال و نامگذاری، معناشناسی فراخوانی (حداکثر یک بار، حداقل یک بار، دقیقاً یک بار)، و لایههای میانافزار — کارگزاران شیء، میانافزار پیامگرا، و چارچوبهای RPC مدرن — است که آنها را پیادهسازی میکنند. همچنین، محدودیتهای شناختهشده شفافیت را پوشش میدهد: روشهایی که در آنها فراخوانیهای از راه دور بهناچار با فراخوانیهای محلی تفاوت دارند.
Core questions
- چگونه میتوان یک تعامل شبکه را با راحتی یک فراخوانی رویه محلی ارائه داد؟
- چه معناشناسی فراخوانی در حضور از دست دادن پیام و خرابی فرآیندها قابل دستیابی است؟
- انتزاع شفافیت مکان لزوماً در کجا از بین میرود؟
Key theories
- فراخوانی رویه از راه دور
- انتزاع RPC یک تعامل از راه دور را به عنوان یک فراخوانی با ظاهر محلی بستهبندی میکند، با استابهای کلاینت و سرور که آرگومانها را بستهبندی و بازگشایی میکنند؛ دستیابی به معناشناسی حتی حداکثر یک بار نیاز به مدیریت دقیق بازانتقال و تشخیص تکرار دارد.
- لایهبندی میانافزار
- میانافزار بین سیستم عامل و برنامه قرار میگیرد تا خدمات نامگذاری، بستهبندی، و فراخوانی را ارائه دهد، از کارگزاران درخواست شیء گرفته تا سیستمهای پیامگرا و انتشار-اشتراک.
- محدودیتهای شفافیت توزیع
- تأخیر، خطای جزئی، همزمانی، و دسترسی به حافظه به این معنی است که اشیاء از راه دور نمیتوانند کاملاً از اشیاء محلی غیرقابل تشخیص باشند، بنابراین طراحیهایی که این تفاوتها را نادیده میگیرند، تمایل دارند تحت بار یا تقسیمبندی شکست بخورند.
Clinical relevance
RPC و میانافزار بافت همبند نرمافزارهای توزیعشده مدرن هستند: معماریهای میکروسرویس، شبکههای سرویس، و APIهای ابری همگی بر پایه چارچوبهای فراخوانی از راه دور ساخته شدهاند، و طراحان آنها باید بهطور صریح در مورد معناشناسی فراخوانی و خطای جزئی استدلال کنند.
History
مقاله بیرل و نلسون در سال ۱۹۸۴ RPC را به عنوان یک انتزاع عملی تثبیت کرد؛ دهه ۱۹۹۰ میانافزارهای شیءگرا مانند CORBA و Java RMI را به ارمغان آورد، که با هشدار تأثیرگذار والدو و همکارانش در مورد محدودیتهای شفافیت تعدیل شد؛ چارچوبهای مدرن این میراث را با RPC سبکوزن و مبتنی بر طرحواره از طریق وب ادامه میدهند.
Debates
- آیا فراخوانیهای از راه دور باید دقیقاً شبیه فراخوانیهای محلی به نظر برسند؟
- شفافیت کامل مکان برنامهنویسی را ساده میکند اما تأخیر و خطای جزئی را پنهان میکند، که منجر به سیستمهای شکننده میشود؛ دیدگاه مخالف، که توسط والدو و همکارانش بیان شده است، معتقد است که توزیع باید آشکار شود تا توسعهدهندگان بتوانند خطا را بهطور صریح مدیریت کنند.
Key figures
- Andrew Birrell
- Bruce Nelson
- Jim Waldo
- Andrew S. Tanenbaum
Related topics
Seminal works
- birrell1984
- waldo1994
Frequently asked questions
- معناشناسی فراخوانی «حداکثر یک بار» به چه معناست؟
- این تضمین میکند که یک عملیات از راه دور یا صفر بار یا یک بار اجرا میشود، هرگز بیشتر، حتی اگر درخواست مجدداً ارسال شود. این هدف عملی رایج است زیرا تضمین اجرای «دقیقاً یک بار» در شرایط خطا بسیار دشوارتر است.