Uzaktan yordam çağrısı
Uzak yordam çağrısı (ya da uzak prosedür çağrısı; İng. Remote Procedure Call (RPC)), bir diğer adres uzayı (genelde ağ paylaşımlı bilgisayarlar) üzerinde programcı açıkça bu uzaktan etkileşim detayları kodlama olmadan çalıştırmak için bir alt yordam veya prosedürü sağlayan bilgisayar programına izin veren süreçler arası iletişim teknolojisidir. Sunucu üzerindeki servisleri kontrol ettiğimizde karşımızı çıkan RPC, arka plânda birçok şeyi gerçekleştiren bir servistir. RPC, temelde istemci ve sunucu arasında yapılan işlemlerin iletişimi için tasarlandı. Bir işlemin gerçekleşmesi için bir gönderici (sunucu) ve bir de istemci vardır.
İçindekiler
Tarihi ve kökeni[değiştir | kaynağı değiştir]
RPC(Remote Procedure Call) fikri 1976'ya, RFC 707'lerin tanımlandığı tarihe dayanır. RFC'nin ilk kullanımı Xerox adı altında “Courier” ile 1981'dedir. RFC'nin Unix'te ilk implemantasyonu Sun sistemledir (ONC RPC). Sun NFS için temel olarak kullanıldı.
Bir başka Unix implemantasyonu ise Apollo Computer’in ağ sistemlerinde oldu (NCS). NCS, daha sonraları DCE/RPC alt dizininde OSF's Distributed Computing Environment (DCE)'de kullanıldı. On yıl sonra Microsoft DCE/RPC'yi alıp Microsoft RPC (MSRPC) olarak uyarladı ve onun içinde DCOM'u uygulamaya koydu. 1990'lı yılların ortalarında Xerox PARC'ın ILU'su, Object Management Group'un CORBA'sı, RPC tabanlı dağıtılmış nesneli türetim sistemlerinde kullanıldı.
Mesaj geçişi[değiştir | kaynağı değiştir]
Bir RPC istemcisinin uzak bir sunucudan yordamı çalıştırarak istemde bulunmasıyla başladı. Cevap, uygulama devam ederken istemciye gönderildi. Birkaç çeşit RPC protokolü bulunmaktadır. Sunucu çağrıyı işlerken, istemci bloklanır (sunucuyu bekler).
Uzaktan prosedür ile yerel prosedürün en önemli farkı, yerel prosedürün öngörülemeyen ağ problemlerinde hatayla karşılaşmasıdır.
RPC yapımında temel adımlar[değiştir | kaynağı değiştir]
- İstemci taslağa çağrıda bulunur. Bu çağrı normal yolla stack'e itilen parametreli yere prosedür çağrısıdır.
- İstemci taslağı parametreleri bir mesaja paketler ve mesajı göndermek için bir sistem çağrısı yapar.
Paketlenmiş parametreler marshalling diye adlandırılır.
- Çekirdek istemci makineden sunucu makineye mesajı yollar.
- Çekirdek gelen paketleri sunucu taslağa iletir.
- Son olarak,sunucu taslak sunucu prosedürünü çağırır.
Standart iletişim mekanizmaları[değiştir | kaynağı değiştir]
Sunucuya farklı istemcilerin erişmeleri için standart RPC sistemleri oluşturulmuş olmalıdır. Çoğunda arayüz tanımlama dili (interface description language (IDL)) kullanılır. Arayüz tanımlama dili birçok platforma izin verir.
Arayüz tanımlama dili(IDL) istemci ve sunucu arasındaki arayüz kodunu düzeltmede kullanılabilir. Bu iş için genelde RPCGEN kullanılır.