RPC Nedir?

Uzaktan Yordam Çağrısı olarak Bilinen RPC, bir ağdaki bilgisayarların ağ ayrıntılarını bilmeden birbirleri arasında program isteği yapmasına olanak tanır.  “Remote Procedure Call” olarak bilinen bu hizmet, esasında sunucu ve istemcilerin başarılı bir iletişim kurabilmesi için dizayn edilmiştir.

uzaktan yordam çağrısı

Sistemde bulunan herhangi bir program eğer istemci ile iletişime geçme gereksinimi duyuyorsa uzaktan yordam çağrısı protokülünü kullanarak iletişim sağlayabilir. Örneğin mail servisleri uzak yordam çağrısını yoğunlukla kullanırlar. Mail almak ve göndermek isteyen sistem, mail sunucusuna POP3 ile bağlanarak mail alabilir ve isterse SMTP üzerinden de mail gönderebilir. Bu iletişim SMTP ve POP3 ile sağlanıyorken bir yandan da RPC protokolüyle de sağlanabilmektedir.

 

RPC Nasıl Çalışır?

RPC protokolü, istemciler ve sunucular arasındaki iletişimi istemci makineden gelen çağrıyı isteğe dönüştürerek yapar. Protokolün çalışma mantığı tam da aşağıdaki görselde ifade edildiği gibidir.

rpc

İstemci sistemde bulunan bir uygulama uzak yordam çağrısı aracılığıyla çağrıda bulunur ve RPC protoklü bu çağrıyı isteğe dönüştürüp katmanlardan geçirerek sunucuya iletir ve ardından sunucunun tepkisine göre aldığı yanıtı tekrardan istemci makineye iletir.

Sistemlerde aynı anda birden fazla remote procedure call meydana gelebilir, yani görselde gördüğünüz işlem eş zamanlı olarak olarak birkaç farklı program tarafından yapılabilir.

 

RPC ve RMI Arasındaki Fark Nedir?

Uzak Yöntem Çağrımı olarak bilinen RMI, esasen Java’da RPC’nin uygulanmasını sağlayan bir API’dır. RMI, sistemde Java yöntemlerinin uzaktan çağırılabilmesine olanak tanımaktadır. Uzaktan yordam çağrısından farkı ise sadece Java yöntemlerini çağırabiliyor olmasıdır. Ayrıca RMI, RPC’ye göre daha yavaş çalışmaktadır. Remote Method Invocation olarak da geçen RMI, bir nesnenin metotlarını ağ üzerinde çalıştırmak için kullanılmaktadır. Uzaktan yordam çağrısı ile ile RMI arasındaki temel farklar ise şunlardır:

  • RMI nesneye yöneliktir, ağ üzerinde method paylaşımı yapabilmeye olanak tanır.
  • RPC, C tabanlıdır ve sistem genelinde çalışan bir protokoldür.
  • RMI, RPC’ye göre daha yavaştır

Javada RPC’yi uygulayan bir API olarak çalışan RMI’nin uzaktan yordam çağrısından en temel farkı Java programları arasında iletişimi sağlıyor olmasıdır. RPC ise dil tabanlı olmayıp sistem genelinde hizmet veren bir iletişim protokolüdür ve ağdaki bilgisayarların birbirleri arasında istek yapmasına olanak tanımaktadır.