# RPC (Uzak Yordam Çağrısı (Remote Procedure Call))

Adres: https://softwaredictionary.org/tr/terimler/rpc
Kategori: Backend ve API'ler
Son güncelleme: 2026-09-30

Kısaca: RPC, bir programın başka bir makinede çalışan fonksiyonu yerel bir fonksiyonmuş gibi çağırdığı ve aradaki ağı gizleyen bir iletişim stilidir.

## RPC nedir?

Uzak yordam çağrısı, bir bilgisayardaki kodun başka bir bilgisayardaki fonksiyonu `getUser(42)` gibi sıradan bir fonksiyon çağrısı gibi görünen bir yolla çalıştırmasını sağlar. Perde arkasında argümanlar serileştirilir, ağ üzerinden gönderilir ve sunucuda yürütülür; sonuç geri gönderilir ve çağırana döndürülür. Fikir 1970'lerin sonu ve 1980'lerin başına uzanır ve dağıtık sistemlerin ve mikroservislerin birbirleriyle konuşma biçiminin büyük bölümünün temelinde hâlâ durur.

Bir RPC sistemi genellikle mevcut yordamları parametreleri ve dönüş tipleriyle listeleyen bir arayüz tanımıyla başlar. Bundan araçlar istemci stub'ları (serileştirme ve ağ işini üstlenen yerel fonksiyonlar) ile çağrıları alıp gerçek uygulamayı çağıran sunucu kodunu üretir. Popüler uygulamalar arasında HTTP/2 üzerinde Protocol Buffers kullanan gRPC, JSON mesajları gönderen hafif bir protokol olan JSON-RPC ve Apache Thrift bulunur. Örneğin JSON-RPC 2.0, kod editörlerinin kullandığı Language Server Protocol'ün ve yapay zekâ araçlarının kullandığı Model Context Protocol'ün arkasındaki mesaj biçimidir.

RPC, bir iş arkadaşınızı arayıp çeyrek toplamını hesaplamasını istemek gibidir: bir eylemi adıyla istersiniz ve nasıl yaptığını umursamadan yanıtı beklersiniz. İşin püf noktası, ağın asla tamamen görünmez olmamasıdır. Uzak bir çağrı yavaş olabilir, zaman aşımına uğrayabilir ya da yarıda başarısız olabilir; bu yüzden iyi RPC istemcileri zaman aşımı belirler, exponential backoff ile dikkatlice yeniden dener ve idempotent işlemleri tercih eder.

RPC en çok REST ile karşılaştırılır. RPC, `createInvoice` veya `sendReminder` gibi eylemler etrafında düzenlenir; REST ise standart HTTP metotlarıyla yönetilen `/invoices/42` gibi kaynaklar etrafında. RPC, katı bir sözleşme içeren dahili servisten servise çağrılar için doğal hissettirir; REST ise herkese açık web API'lerinde daha yaygındır. gRPC'nin genel olarak RPC'nin eş anlamlısı değil, belirli bir RPC framework'ü olduğunu unutmayın.

## Önemli noktalar

- RPC, başka bir makinedeki koda yapılan çağrıyı yerel bir fonksiyon çağrısı gibi gösterir.
- İstemci stub'ları argümanları serileştirir ve gönderir; sunucu fonksiyonu çalıştırır ve sonucu döndürür.
- gRPC, JSON-RPC ve Apache Thrift yaygın RPC uygulamalarıdır.
- Uzak çağrılar başarısız olabilir ya da zaman aşımına uğrayabilir, bu yüzden zaman aşımı ve dikkatli yeniden denemeler gerekir.
- RPC eylem odaklıdır; REST kaynak odaklıdır.

## Örnek: Küçük bir JSON-RPC 2.0 istemcisi

```javascript
// A minimal client stub: remote calls look like local ones
async function call(method, params) {
  const res = await fetch("https://api.example.com/rpc", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ jsonrpc: "2.0", method, params, id: 1 }),
  });
  const reply = await res.json(); // {"jsonrpc":"2.0","result":{...},"id":1}
  if (reply.error) throw new Error(reply.error.message);
  return reply.result;
}

// The caller just names the procedure and passes arguments
const user = await call("getUser", { id: 42 });
```

## Sık sorulan sorular

**RPC ile REST arasındaki fark nedir?**

RPC, `transferMoney` gibi adıyla çağırdığınız eylemleri genellikle tek bir endpoint ya da üretilmiş bir istemci üzerinden sunar. REST ise kaynakları `/accounts/42` gibi URL'lerde sunar ve onlar üzerinde işlem yapmak için standart HTTP metotlarını ve durum kodlarını kullanır.

**gRPC ile RPC aynı şey midir?**

Hayır. RPC, uzak fonksiyonları çağırmanın genel fikridir; gRPC ise mesajlar için Protocol Buffers'ı, taşıma için HTTP/2'yi kullanarak bunu uygulayan açık kaynaklı bir framework'tür.

**RPC senkron müdür?**

Kavramsal olarak çağıran, normal bir fonksiyon çağrısı gibi sonucu bekler. Pratikte modern RPC kütüphaneleri çağrıları asenkron fonksiyonlar ya da promise'ler olarak sunar; böylece çağıran engellenmez ve bazıları streaming ile tek yönlü bildirimleri de destekler.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
