Ian Chou's Blog

RPC (Remote Procedure Call) 就是 IPC 嗎?

RPC (Remote Procedure Call) 就是 IPC 嗎?

這是一個定義問題。答案是:不完全是。

精確來說:Process 之間互相溝通的大分類叫做 IPC (Inter-Process Communication)。而 RPC 只是 IPC 的其中一種「特定模式」。

這就像是:


1. 什麼時候才叫 RPC?

RPC 的重點在於 「偽裝」。它的設計目的是讓程式設計師覺得 「呼叫遠端的東西,就像在呼叫自己程式裡的函式一樣」

它必須具備這種 「一問一答」 的結構:

  1. 指定動作:我要呼叫 add
  2. 給予參數:參數是 a=1, b=2
  3. 等待回傳:我等你算完,給我 result=300

2. 什麼是「IPC 但不是 RPC」?

A. 訊號 (Signals)

Ctrl+C 殺掉 Process。這只是「中斷通知」,沒有參數,沒有回傳值,不是 RPC。

B. 共享記憶體 (Shared Memory)

兩個 Process 映射到同一塊 RAM。這像是共用白板,沒有「呼叫」的動作。

C. 單向串流 (Streams)

cat file.txt | grep "error" - 只是單純的資料流動,不是控制流動。


3. 圖解比較

特性 RPC 其他 IPC
核心思維 請幫我做這件事並回傳結果 這裡有資料 / 發生大事了
結構 請求 ⇄ 回應 單向流動、廣播
像什麼? 寄掛號信等回執 廣播電台、按火警鈴

4. 為什麼 MCP 選擇用 RPC?

因為 AI 的邏輯是「使用工具 (Function Calling)」

JSON-RPC 這種有 ID、有 Method、有 Result 的格式,是為了配合 AI 的思維模式而選用的最佳解。