🔌 Remote Procedure Call

RPC, remote procedure call hızlı bakış, avantajları, dezavantajları, nerelerde kullanılır, faydaları, nedir, ne için neden kullanılır

👀 Hızlıca Bakış

  • 🔌 Sunucu ve istemci arasında çalışan programlar için kullanılır

  • 💁‍♂️ Mail server gibi hem sunucu hem de istemci üzerinden mail gönderme işlemleri için tercih edilir

💖 Avantajları Nelerdir?

  • 👨‍💻 İstemcilerin sunucu ile geleneksel sistem çağrıları ve prosedürler ile yüksek seviyeli programlama dilleri ile iletişimde bulunmasına fayda sağlar

  • 💎 Hem dağıtık hem de yerel sistemlerde kullanılabilir bir yapıdır

  • 🤝 Process veya thread odaklı modelleri destekler

  • 🌃 Dahili mesaj aktarımı işlemlerini kullanıcıdan gizli olarak yapar (abstraction)

  • 📈 Diğer protoköl katmanlarını çıkardığından performansı artırır

⚙️ Nasıl Çalışır?

  • İstemci, parametrelerin yığına aktarıldı yerel bir istek olan client stub isteğinde bulunur

  • Client stub parametreleri mesaj paketine çevirip (marshalling), mesajı göndermek için sistem çağrısında bulunur

  • İstemci üzerindeki işletim sistemi uzak sunucuya mesajları gönderir

  • Sunucu işletim sistemi gelen mesajları alır ve Server Stub alanına aktarır

  • Gelen mesajlar server stub üzerinde parametrelerine ayrıştırılır (unmarshalling)

  • İşlemler tamamlandıktan sonra, server stub üzerinde yanıt parametreleri içeren mesajlar oluşturulur (marshalling) ve server stub tarafından bu mesajlar transport layer alanına aktarılır

  • Sunucu transport layer alanı mesajları client stub üzerine aktarmak amacıyla istemcinin transport layer alanına aktarır

  • Client stub mesajlardan parametreleri ayrıştırır ve uygular, sonuçları istekte bulunan sunucuya gönderir

💡 RPC Stub, client veya istemci tarafından RPC isteğini başlatmak için yapılan aktivitedir

🍱 Kullanılan Bileşenler

  • İstemci veya sunucu işlemcisi

  • RPC stubs

  • Marshalling engine (parametreleri mesajlardan ayrıştırmak için NDR20 veya NDR64)

  • Runtime API (bilgisayarı kontrol etmek için)

  • RPC protokolü ile bağlantı yapacak araç

  • RPC protokollerini yerel olarak işleyecek araç

  • Registry (kayıt defteri)

  • Win32 APIs (sistem çağrıları yapmak için: kernel32.dll, advapi32.dll, ntdll.dll)

  • SSPI (güvenlik için secur32.dll)

🤝 RPC; TCP, SPX, HTTP, UDP ve CDP gibi protokolleri destekler

🔗 Faydalı Bağlantılar