RPC در مقابل RMI
تفاوت اساسی بین RPC و RMI در این است که RPC مکانیزمی است که فراخوانی یک رویه را در رایانه راه دور امکان پذیر می کند در حالی که RMI اجرای RPC در جاوا است. RPC زبان خنثی است اما فقط از انواع داده های اولیه برای ارسال پشتیبانی می کند. از طرف دیگر، RMI محدود به جاوا است اما اجازه عبور اشیاء را می دهد. RPC از ساختارهای زبان رویه ای سنتی پیروی می کند در حالی که RMI از طراحی شی گرا پشتیبانی می کند.
RPC چیست؟
RPC که مخفف Remote Procedure Call است، نوعی ارتباط بین فرآیندی است. این امکان فراخوانی یک تابع را در فرآیند دیگری که روی رایانه محلی یا رایانه راه دور اجرا می شود، می دهد.این مفهوم مدت ها پیش در سال 1980 ظهور کرد، اما اولین پیاده سازی معروف در یونیکس مشاهده شد.
RPC شامل چندین مرحله است. کلاینت طبق معمول یک فراخوانی رویه ای را در رایانه محلی انجام می دهد. ماژولی به نام کلاینت stub آرگومان ها را جمع آوری می کند و یک پیام ایجاد می کند و به سیستم عامل ارسال می کند، سیستم عامل یک تماس سیستمی انجام می دهد و این پیام را به کامپیوتر راه دور ارسال می کند. سیستم عامل در سرور پیام را جمع آوری می کند و به ماژول روی سرور به نام خرد سرور ارسال می کند. سپس خرد سرور رویه را روی سرور فراخوانی می کند. در نهایت، نتایج به مشتری ارسال می شود.
مزیت استفاده از RPC مستقل بودن آن از جزئیات شبکه است. برنامه نویس فقط باید به صورت انتزاعی مشخص کند در حالی که سیستم عامل به جزئیات شبکه داخلی رسیدگی می کند. بنابراین این برنامهنویسی را آسانتر میکند و به RPC اجازه میدهد با وجود تفاوتهای فیزیکی و پروتکلی، در هر شبکهای کار کند. پیاده سازی RPC در تمام سیستم عامل های اصلی مانند یونیکس، لینوکس، ویندوز و OS X وجود دارد. RPC عموماً زبانی خنثی است، بنابراین انواع دادهها را به ابتداییترین آنها محدود میکند، زیرا آنها باید برای همه زبانها مشترک باشند. رویکرد در RPC شی گرا نیست، اما یک مکانیسم رویه ای سنتی مانند C. است.
RMI چیست؟
RMI که مخفف Remote Method Invocation است، یک API (رابط برنامه نویسی کاربردی) است که RPC را در جاوا برای پشتیبانی از طبیعت شی گرا پیاده سازی می کند. این امکان فراخوانی روشهای جاوا را در یک ماشین مجازی جاوا دیگر که در همان رایانه یا یک رایانه راه دور قرار دارد، میدهد. محدودیت RMI این است که فقط متدهای جاوا را می توان فراخوانی کرد، اما این مزیت را دارد که اشیاء را می توان به عنوان آرگومان ارسال کرد و مقادیر را برگرداند.هنگامی که عملکرد در نظر گرفته می شود، RMI به دلیل درگیر شدن بایت کد در ماشین مجازی جاوا، کندتر از RPC است، اما RMI بسیار برنامه نویس پسند است، و استفاده از آن بسیار آسان است.
RMI از مکانیسمهای امنیتی داخلی در جاوا استفاده میکند و همچنین یک کارخانه سوکت ارائه میدهد که استفاده از پروتکلهای لایه انتقال سفارشی غیر TCP را امکانپذیر میسازد. علاوه بر این، RMI روش هایی را برای دور زدن فایروال ها ارائه می دهد. مراحلی که در RMI اتفاق می افتد مشابه RPC است. پیاده سازی RMI به جزئیات شبکه داخلی توجه می کند که برنامه نویس نیازی به نگرانی در مورد آنها ندارد.
تفاوت بین RPC و RMI چیست؟
• RPC زبان خنثی است در حالی که RMI محدود به جاوا است.
• RPC مانند C رویه ای است، اما RMI شی گرا است.
• RPC فقط از انواع داده های اولیه پشتیبانی می کند در حالی که RMI اجازه می دهد تا اشیا به عنوان آرگومان و مقادیر برگردانده ارسال شوند. هنگام استفاده از RPC، برنامه نویس باید هر شیء ترکیبی را به انواع داده های اولیه تقسیم کند.
• برنامه ریزی RMI برای RPC آسان است.
• RMI کندتر از RPC است زیرا RMI شامل اجرای بایت کد جاوا است.
• RMI به دلیل ماهیت شی گرا امکان استفاده از الگوهای طراحی را می دهد در حالی که RPC این قابلیت را ندارد.
خلاصه:
RPC در مقابل RMI
RPC یک مکانیسم خنثی زبان است که امکان فراخوانی یک رویه را در رایانه راه دور فراهم می کند. با این حال، ویژگی خنثی زبان، انواع دادههایی را که به عنوان آرگومان ارسال میشوند محدود میکند و مقادیر را به انواع اولیه برمیگرداند. RMI پیادهسازی RPC در جاوا است و از عبور آبجکت نیز پشتیبانی میکند و زندگی برنامهنویس را آسانتر میکند. مزیت RMI پشتیبانی از طراحی شی گرا است، اما محدودیت به جاوا یک نقطه ضعف است.