Tavsiye, 2024

Editörün Seçimi

RPC ve RMI Arasındaki Fark

RPC ve RMI, istemciyle sunucu arasında iletişim kurarak bir müşterinin sunucuya prosedürü veya yöntemi çağırmasını sağlayan mekanizmalardır. RPC ve RMI arasındaki ortak fark, RPC'nin yalnızca prosedürel programlamayı desteklediği, RMI'nın nesne yönelimli programlamayı desteklediğidir.

İkisi arasındaki diğer büyük fark, uzak yordamlara iletilen parametrelerin sıradan veri yapılarından oluşmasıdır. Öte yandan, uzak yönteme iletilen parametreler nesnelerden oluşmaktadır.

Karşılaştırma Tablosu

Karşılaştırma için temelRPCRMI
DesteklerProsedürel programlama
Nesne yönelimli programlama
ParametrelerSıradan veri yapıları uzak işlemlere geçirilir.Nesneler uzak yöntemlere iletilir.
verimRMI'den düşükRPC'den fazlası ve modern programlama yaklaşımı ile desteklenir (örn. Nesneye yönelik paradigmalar)
Genel giderlerDaha
Karşılaştırmalı olarak daha az
Giriş parametreleri zorunludur.EvetŞart değil
Programlama kolaylığı sağlanması
Yüksek
düşük

RPC'un tanımı

Uzaktan Prosedür Çağrısı (RPC), dağıtılmış hesaplama için ve yerel prosedür çağrılarının anlamını temel alan bir programlama dili özelliğidir. En yaygın uzaktan servis formlarıdır ve bir ağ üzerinden bağlı sistemler arasında kullanılacak prosedür çağrısı mekanizmasını soyutlamanın bir yolu olarak tasarlanmıştır. İşletim sisteminin işlemlerin paylaşılan verileri yönetmesine izin verdiği ve farklı işlemlerin ayrı sistemlerde yürütüldüğü ve mutlaka mesaj tabanlı iletişim gerektirdiği bir ortamla ilgilendiği IPC mekanizmasına benzer.

RPC'nin verilen adımlarla nasıl uygulandığını anlayalım:

  • İstemci işlemi, istemci saplamasını parametrelerle çağırır ve arama tamamlanıncaya kadar yürütmesi askıya alınır.
  • Daha sonra parametreler, müşteri saplaması yoluyla birleştirilerek makineden bağımsız forma çevrilir. Ardından, parametrelerin gösterimini içeren mesaj hazırlanır.
  • Sitenin kimliğini bulmak için istemci, uzaktan prosedürün bulunduğu isim sunucusuyla iletişim kurar.
  • Engelleme protokolünü kullanarak istemci saptama, mesajı uzak işlem çağrısının bulunduğu siteye gönderir. Bu adım, müşteri saplamasını bir cevap alana kadar durdurur.
  • Sunucu sitesi, istemci tarafından gönderilen mesajı alır ve makineye özgü formata dönüştürür.
  • Şimdi sunucu saplaması, parametrelerle birlikte sunucu prosedürü üzerine bir çağrı yürütür ve işlem tamamlanıncaya kadar sunucu saplaması durdurulur.
  • Sunucu prosedürü oluşturulan sonuçları sunucu saplamasına geri döndürür ve sonuçlar sunucu saplamada makineden bağımsız formata dönüştürülür ve sonuçları içeren bir mesaj oluşturur.
  • Sonuç mesajı, müşteri saplaması için uygun makineye özel formata dönüştürülen müşteri saplamasına gönderilir.
  • Son istemcideki saplama, sonuçları istemci işlemine döndürür.

RMI'un tanımı

Uzaktan Yöntem Çağırma (RMI), RPC'ye benzer ancak dile özgüdür ve java özelliğidir. Bir iş parçacığının uzaktaki bir nesnede yöntemi çağırmasına izin verilir. İstemci ve sunucu tarafında şeffaflığı korumak için, taslakları ve iskeletleri kullanarak uzaktaki nesneyi uygular. Saplama, müşteriye aittir ve uzak nesne için bir vekil olarak davranır.

Bir istemci uzak bir yöntemi çağırdığında, uzak yöntemin saplaması çağrılır. Müşteri koçanı, bir metodun adını ve belirtilen parametreleri içeren parselin oluşturulmasından ve gönderilmesinden sorumludur ve iskelet parselin alınmasından sorumludur.

İskelet parametreleri marşalize eder ve sunucuda istenen yöntemi çağırır. İskelet verilen değeri (ya da istisnaları) parselle birleştirir ve bunu müşteriye gönderir. Saplama, iade paketini yeniden birleştirir ve müşteriye gönderir.

Java'da, parametreler yöntemlere iletilir ve başvuru şeklinde döndürülür. Tüm nesneler muhtemelen uzak yöntemler olmadığından, bu, RMI hizmeti için zahmetli olabilir. Bu nedenle hangisinin referans olarak alınabileceğini ve hangilerinin geçemeyeceğini belirlemesi gerekir.

Java, nesnelerin değer olarak iletildiği serileştirme adı verilen işlemi kullanır. Uzak nesne değere göre yerelleştirilir. Nesne için uzak bir referansı, saplama sınıfının URL'si ile birlikte geçirerek referans yoluyla bir nesneyi de geçirebilir. Referansa göre iletme, uzak nesne için bir saplamayı kısıtlar.

RPC ve RMI Arasındaki Anahtar Farklılıklar

  1. RPC, prosedürel programlama paradigmalarını destekler, böylece C, RMI nesne yönelimli programlama paradigmalarını destekler ve java tabanlıdır.
  2. RPC'de uzak işlemlere geçirilen parametreler sıradan veri yapılarıdır. Aksine, RMI nesneleri uzak metoda parametre olarak aktarır.
  3. RPC, RMI'nın eski sürümü olarak kabul edilebilir ve prosedürel programlamayı destekleyen programlama dillerinde kullanılır ve yalnızca değer yöntemiyle pass kullanabilir. Buna karşılık olarak, RMI tesisi, değer veya referansa göre geçişi kullanabilen modern programlama yaklaşımına dayalı olarak tasarlanmıştır. RMI'nin bir başka avantajı, referans yoluyla iletilen parametrelerin değiştirilebilmesidir.
  4. RPC protokolü, RMI'den daha fazla ek yük üretiyor.
  5. RPC'de geçirilen parametrelerin “ giriş ” olması gerekir; bu, işleme iletilen değerin ve çıkış değerinin aynı veri tiplerine sahip olması gerektiği anlamına gelir. Buna karşılık, RMI'da “ giriş ” parametrelerini geçme zorunluluğu yoktur.
  6. RPC'de referanslar, iki işlemin ayrı adres alanına sahip olması nedeniyle mümkün olamamıştır, ancak RMI durumunda mümkündür.

Sonuç

Hem RPC hem de RMI aynı amaca hizmet eder ancak farklı programlama paradigmalarını destekleyen dillerde kullanılır, bu nedenle farklı özelliklere sahiptir.

Top