RPC ve RMI arasındaki temel fark, RPC'nin java'da RPC uygulaması iken RPC'nin uzak bilgisayarda bir yordam çağrılmasını sağlayan bir mekanizma olmasıdır. RPC dilden bağımsızdır, ancak yalnızca ilkel veri türlerini destekler. Öte yandan, RMI Java ile sınırlıdır ancak geçiş nesnelerine izin verir. RPC geleneksel yöntemsel dil yapılarını izlerken, RMI nesne yönelimli tasarımı destekler.
Uzaktan Yordam Çağrısı anlamına gelen RPC, bir tür süreçler arası iletişimdir. Bu, yerel bilgisayarda veya uzak bilgisayarda çalışan başka bir işlemde bir işlevin çağrılmasına olanak tanır. Bu kavram uzun zaman önce 1980'de ortaya çıktı, ancak ilk ünlü uygulama Unix'te görüldü.
RPC birkaç adım içerir. İstemci her zamanki gibi yerel bilgisayarda bir yordam çağrısı yapar. Client stub adlı modül argümanları toplar ve bir mesaj oluşturur ve işletim sistemine geçer, İşletim sistemi bir sistem çağrısı yapar ve bu mesajı uzaktaki bilgisayara gönderir. Sunucudaki işletim sistemi mesajı toplar ve sunucudaki sunucu saplama adı verilen modüle geçer. Ardından sunucu saplaması, sunucudaki yordamı çağırır. Son olarak, sonuçlar müşteriye geri gönderilir.
RPC kullanmanın avantajı, ağ ayrıntılarında bağımsız olmasıdır. İşletim sistemi dahili ağ ayrıntılarına bakarken, programcı soyut bir şekilde belirtmek zorundadır. Bu, programlamayı kolaylaştırır ve fiziksel ve protokol farklılıklarına rağmen RPC'nin herhangi bir ağda çalışmasını sağlar. RPC uygulamaları Unix, Linux, Windows ve OS X gibi tüm genel işletim sistemlerinde bulunur. RPC genellikle dil açısından tarafsızdır, bu nedenle veri türlerini tüm diller için ortak olması gerektiğinden en ilkel olanlarla sınırlar. RPC'deki yaklaşım nesne yönelimli değildir, ancak C'deki gibi geleneksel bir prosedür mekanizmasıdır..
Uzaktan Yöntem Çağırma anlamına gelen RMI, nesne yönelimli doğayı desteklemek için Java'da RPC uygulayan bir API'dir (Uygulama Programlama Arabirimi). Bu, aynı veya uzak bir bilgisayarda bulunan başka bir Java Sanal makinesinde Java yöntemlerinin çağrılmasına izin verir. RMI'nin sınırlaması, yalnızca Java yöntemlerinin çağrılabilmesidir, ancak bu, nesnelerin bağımsız değişkenler ve dönüş değerleri olarak geçirilebilmesi avantajı ile birlikte gelir. Performans, Java Sanal makinesinde bayt kodun katılımı nedeniyle RMI'nin RPC'den daha yavaş olduğu düşünüldüğünde, ancak RMI çok programcı dostudur ve kullanımı çok kolaydır.
RMI, Java'da dahili güvenlik mekanizmaları kullanır ve ayrıca TCP dışı özel taşıma katmanı protokollerinin kullanılmasını sağlayan bir soket fabrikası verir. Ayrıca, RMI güvenlik duvarlarını atlamak için yöntemler sağlar. RMI'da oluşan adımlar RPC'ye benzer. RMI uygulaması, programcının bunlar hakkında endişelenmesine gerek olmayan dahili ağ ayrıntılarına bakar.
• RMI Java ile sınırlıyken RPC dilden bağımsızdır.
• RPC, C'deki gibi prosedüreldir, ancak RMI nesne yönelimlidir.
• RPC yalnızca ilkel veri türlerini desteklerken, RMI nesnelerin bağımsız değişken ve dönüş değerleri olarak iletilmesine izin verir. RPC kullanırken, programcı bileşik nesneleri ilkel veri türlerine ayırmalıdır.
• RMI'nin RPC'yi programlaması kolaydır.
• RMI java bayt kodunun yürütülmesini içerdiğinden RMI, RPC'den daha yavaştır.
• RMI bu özelliğe sahip değilken, RMI nesne yönelimli doğa nedeniyle tasarım desenlerinin kullanılmasına izin verir.
Özet:
RPC, uzak bilgisayardaki bir yordamın çağrılmasına izin veren dilden bağımsız bir mekanizmadır. Ancak, dil nötr özelliği, bağımsız değişken olarak iletilen veri türlerini ve ilkel türlere değer döndüren veri türlerini sınırlar. RMI, Java'da RPC'nin uygulanmasıdır ve nesne geçişini de destekleyerek programcının ömrünü kolaylaştırır. RMI'nin avantajı nesneye yönelik tasarım desteğidir, ancak Java sınırlaması bir dezavantajdır.
Görüntüler Nezaket: