Uzaktan yordam çağrısı

Uzak yordam çağrısı (ya da uzak prosedür çağrısı; , 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ıza çı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.. Yani programcı, alt prosedür ister çalışan programın yerelinde ister uzağında olsun, temelde aynı kodu yazar. Bu bir tür istemci-sunucu etkileşimidir (çağıran istemci, çalıştıran sunucudur) ve tipik olarak bir istek-yanıt mesaj geçirme sistemi aracılığıyla uygulanır. Nesne yönelimli programlama modelinde, RPC'ler uzaktan yöntem çağırma (RMI) ile temsil edilir. RPC modeli bir konum şeffaflığı seviyesini ifade eder, yani çağrı prosedürleri yerel ya da uzak olsun büyük ölçüde aynıdır, ancak genellikle aynı değildirler, bu nedenle yerel çağrılar uzak çağrılardan ayırt edilebilir. Uzak çağrılar genellikle yerel çağrılardan çok daha yavaş ve daha az güvenilirdir, bu nedenle bunları ayırt etmek önemlidir.RPC'ler süreçler arası iletişimin (IPC) bir şeklidir, çünkü farklı süreçler farklı adres alanlarına sahiptir: aynı ana makine üzerindeyseler, fiziksel adres alanı aynı olsa bile farklı sanal adres alanlarına sahiptirler; farklı ana makinelerdeyseler, fiziksel adres alanı farklıdır. Bu kavramı uygulamak için birçok farklı (genellikle uyumsuz) teknoloji kullanılmıştır.İstek-yanıt protokolleri 1960'ların sonlarında bilgi işlemin ilk dönemlerine, ağ işlemleri modeli olarak uzaktan yordam çağrılarının teorik önerileri 1970'lere ve pratik uygulamaları 1980'lerin başlarına dayanmaktadır. Bruce Jay Nelson genellikle 1981 yılında "uzaktan yordam çağrısı" terimini ortaya atmasıyla tanınır. Modern işletim sistemlerinde kullanılan uzak yordam çağrılarının kökleri, süreç senkronizasyonu için bir istek-yanıt iletişim protokolü kullanan RC 4000 çoklu programlama sistemine dayanmaktadır. Ağ işlemlerini uzak yordam çağrıları olarak ele alma fikri, en azından 1970'lerde ARPANET'in ilk belgelerine kadar uzanmaktadır. 1978'de Per Brinch Hansen, süreçler arasındaki yordam çağrılarından oluşan "harici isteklere" dayalı dağıtık bilgi işlem için bir dil olan Dağıtık Süreçleri önermiştir.İlk pratik uygulamalardan biri 1982 yılında Brian Randell ve arkadaşları tarafından UNIX makineleri arasında Newcastle Connection için yapılmıştır. Bunu kısa süre sonra Xerox PARC'daki Cedar ortamında Andrew Birrell ve Bruce Nelson tarafından yapılan "Lupine" takip etmiştir. Lupine otomatik olarak taslaklar oluşturmuş, tip açısından güvenli bağlar sağlamış ve iletişim için verimli bir protokol kullanmıştır. RPC'nin ilk iş kullanımlarından biri 1981 yılında Xerox tarafından "Courier" adı altında yapılmıştır. RPC'nin Unix üzerindeki ilk popüler uygulaması, Ağ Dosya Sistemi (NFS) için temel olarak kullanılan Sun'ın RPC'siydi (şimdi ONC RPC olarak adlandırılıyor).1990'larda, nesne yönelimli programlamanın popülerleşmesiyle birlikte, Common Object Request Broker Architecture (CORBA, 1991) ve Java uzaktan yöntem çağırma gibi alternatif bir uzaktan yöntem çağırma (RMI) modeli yaygın olarak uygulanmıştır. RMI'lar ise internetin yükselişiyle birlikte, özellikle 2000'li yıllarda popülerliğini yitirmiştir.RPC bir istek-yanıt protokolüdür. RPC, istemci tarafından başlatılır ve bu, sağlanan parametrelerle belirtilen bir yordamı yürütmek için bilinen bir uzak sunucuya bir istek mesajı gönderir. Uzaktaki sunucu istemciye bir yanıt gönderir ve uygulama işlemine devam eder. Sunucu çağrıyı İşlerken, istemci sunucuya eş zamansız bir istek göndermediği sürece, istemci engellenir(yürütmeye devam etmeden önce sunucu işlemeyi bitirene kadar bekler).Çeşitli uygulamalarda birçok varyasyon ve incelik vardır, bu da çeşitli farklı RPC protokolleriyle sonuçlanır.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. Ayrıca, arayanlar genellikle uzaktan yordamın gerçekten çağrılıp çağrılmadığını bilmeden bu tür arızalarla ilgilenmelidir. İdempotent prosedürler (birden fazla çağrılırsa ek etkisi olmayanlar) kolayca ele alınır, ancak uzak prosedürleri çağırmak için kodun genellikle dikkatlice yazılmış düşük seviyeli alt sistemlerle sınırlı olması için yeterli zorluk kalır.İstemci, istemci sapmasını çağırır. Çağrı parametrelerin yığına normal şekilde itildiği yerel bir yordam ç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.Dağıtılmış uygulamaların kullanımının artmasıyla beraber uygulamaların istemci-sunucu iletişiminde güvenliğin önemi de artmaktadır. Uzaktan Yordam Çağrısı (RPC)   çalışma zamanı kitaplığı, hem istemciler hem de sunucular için kimlik doğrulama hizmetlerine yönelik standartlaştırılmış bir arabirim sağlar.  Uygulamalar, tüm çağrıların yetkili istemcilerden geldiğinden emin olmak için kimliği doğrulanmış uzaktan yordam çağrıları kullanırUzaktan yordam çağrısı(RPC), Windows işletim sistemlerini temel alan tüm istemci/sunucu uygulamalarında kullanabilirsiniz. Unix ve Apple gibi işletim sistemlerini içeren heterojen ağ ortamları için istemci ve sunucu programları oluşturmak için de kullanılabilir.RPC, C/C++ programcıları tarafından kullanılmak üzere tasarlanmıştır. Microsoft Arabirim Tanım Dili (MIDL) ve MIDL derleyicisine aşinalık gereklidir.İstemcilerin sunucu ile her zamanki sistem çağrıları ve prosedürler ile iletişimde bulunmasına fayda sağlar.RPC, bir iletişim sistemini, başka bir makineyi ve başka bir işlemi içerdiği için arızaya karşı oldukça savunmasızdır.RPC yalnızca etkileşim tabanlıdır ve bu nedenle, donanım mimarisi söz konusu olduğunda herhangi bir esneklik sunmaz.