Uzaktan Yordam Çağrısı – 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.
Sistemde bulunan herhangi bir program eğer istemci ile iletişime geçme gereksinimi duyuyorsa RPC protokülünü kullanarak iletişim sağlayabilir. Örneğin mail servisleri RPC’yi 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.
İstemci sistemde bulunan bir uygulama RPC 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 RPC 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. RPC’den 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. RPC 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 RPC’den 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.