RPC vs RMI
RPC ilə RMI arasındakı əsas fərq ondan ibarətdir ki, RPC uzaq kompüterdə proseduru çağırmağa imkan verən mexanizmdir, RMI isə RPC-nin java-da tətbiqidir. RPC dil neytraldır, lakin yalnız ötürüləcək primitiv məlumat növlərini dəstəkləyir. Digər tərəfdən, RMI Java ilə məhdudlaşır, lakin obyektləri ötürməyə imkan verir. RPC ənənəvi prosedur dili konstruksiyalarını izləyir, RMI isə obyekt yönümlü dizaynı dəstəkləyir.
RPC nədir?
Uzaqdan Prosedur Zəngi mənasını verən RPC, proseslərarası ünsiyyət növüdür. Bu, yerli kompüterdə və ya uzaq kompüterdə işləyən başqa bir prosesdə funksiyaya zəng etməyə imkan verir. Bu konsepsiya uzun müddət əvvəl 1980-ci ildə ortaya çıxdı, lakin ilk məşhur tətbiq Unix-də görüldü.
RPC bir neçə addımı əhatə edir. Müştəri həmişə olduğu kimi yerli kompüterdə prosedur çağırışı edir. Client stub adlı modul arqumentləri toplayır və mesaj yaradır və əməliyyat sisteminə ötürür, Əməliyyat sistemi sistem çağırışı edir və bu mesajı uzaq kompüterə göndərir. Serverdəki əməliyyat sistemi mesajı toplayır və server stub adlı serverdəki modula keçir. Sonra server stub serverdəki proseduru çağırır. Nəhayət, nəticələr müştəriyə geri göndərilir.
RPC-dən istifadə etməyin üstünlüyü onun şəbəkə detallarından müstəqil olmasıdır. Proqramçı yalnız mücərrəd şəkildə müəyyən etməlidir, əməliyyat sistemi daxili şəbəkə detallarına baxacaq. Beləliklə, bu, proqramlaşdırmanı asanlaşdırır və fiziki və protokol fərqlərinə baxmayaraq, RPC-nin istənilən şəbəkədə işləməsinə imkan verir. RPC tətbiqləri Unix, Linux, Windows və OS X kimi bütün əsas əməliyyat sistemlərində mövcuddur. RPC ümumiyyətlə dil üçün neytraldır, buna görə də məlumat növlərini ən primitiv olanlarla məhdudlaşdırır, çünki onlar bütün dillər üçün ümumi olmalıdır. RPC-də yanaşma obyekt yönümlü deyil, lakin C. dilindəki kimi ənənəvi prosedur mexanizmdir.
RMI nədir?
Remote Method Invocation mənasını verən RMI, obyekt yönümlü təbiəti dəstəkləmək üçün Java-da RPC tətbiq edən APIdir (Tətbiq Proqramlaşdırma İnterfeysi). Bu, eyni kompüterdə və ya uzaq kompüterdə yerləşən başqa Java Virtual maşınında Java metodlarını çağırmağa imkan verir. RMI-nin məhdudiyyəti ondan ibarətdir ki, yalnız Java metodları işə salına bilər, lakin bu, obyektlərin arqumentlər və qaytarılan dəyərlər kimi ötürülə bilməsi üstünlüyü ilə gəlir. Performans nəzərə alındıqda, Java Virtual maşınında bayt kodun cəlb edilməsi səbəbindən RMI RPC-dən daha yavaş olur, lakin RMI çox proqramçıya uyğundur və istifadəsi çox asandır.
RMI Java-da daxili təhlükəsizlik mexanizmlərindən istifadə edir və həmçinin TCP olmayan xüsusi nəqliyyat qatı protokollarının istifadəsinə imkan verən soket fabriki verir. Bundan əlavə, RMI firewallları yan keçmək üçün üsullar təqdim edir. RMI-də baş verən addımlar RPC-yə bənzəyir. RMI-nin tətbiqi daxili şəbəkə təfərrüatlarına baxır, burada proqramçı onlar haqqında narahat olmayacaq.
RPC və RMI arasındakı fərq nədir?
• RMI Java ilə məhdudlaşarkən RPC dil neytraldır.
• RPC C-də olduğu kimi prosedurdur, lakin RMI obyekt yönümlüdür.
• RPC yalnız primitiv məlumat növlərini dəstəkləyir, RMI isə obyektlərin arqumentlər kimi ötürülməsinə və dəyərləri qaytarmağa imkan verir. RPC istifadə edərkən proqramçı hər hansı mürəkkəb obyekti primitiv məlumat növlərinə bölməlidir.
• RMI-ni bu RPC-ni proqramlaşdırmaq asandır.
• RMI RPC-dən daha yavaşdır, çünki RMI java bayt kodunun icrasını əhatə edir.
• RMI obyekt yönümlü təbiətə görə dizayn nümunələrinin istifadəsinə icazə verir, RPC isə bu imkana malik deyil.
Xülasə:
RPC vs RMI
RPC uzaq kompüterdə proseduru çağırmağa imkan verən neytral dil mexanizmidir. Bununla belə, dilin neytral xüsusiyyəti arqumentlər kimi ötürülən məlumat növlərini məhdudlaşdırır və dəyərləri primitiv tiplərə qaytarır. RMI, RPC-nin Java-da tətbiqidir və o, proqramçının həyatını asanlaşdıran obyektlərin ötürülməsini də dəstəkləyir. RMI-nin üstünlüyü obyekt yönümlü dizayn dəstəyidir, lakin Java ilə məhdudlaşma çatışmazlıqdır.