RPC (Remote Procedure Call) 就是 IPC 嗎?
RPC (Remote Procedure Call) 就是 IPC 嗎?
這是一個定義問題。答案是:不完全是。
精確來說:Process 之間互相溝通的大分類叫做 IPC (Inter-Process Communication)。而 RPC 只是 IPC 的其中一種「特定模式」。
這就像是:
- IPC = 「我跟你在交流」
- RPC = 「我寄一張問卷給你,你填完寄回來給我」
1. 什麼時候才叫 RPC?
RPC 的重點在於 「偽裝」。它的設計目的是讓程式設計師覺得 「呼叫遠端的東西,就像在呼叫自己程式裡的函式一樣」。
它必須具備這種 「一問一答」 的結構:
- 指定動作:我要呼叫
add - 給予參數:參數是
a=1, b=2 - 等待回傳:我等你算完,給我
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)」。
- AI 的思維:
Input -> Thinking -> Select Tool -> Get Result -> Output - 這完全對應到 RPC:
Request -> Processing -> Response
JSON-RPC 這種有 ID、有 Method、有 Result 的格式,是為了配合 AI 的思維模式而選用的最佳解。
- ← Previous
MCP Resources 最佳實踐:從官方範例到實戰設計 - Next →
stdin 到底是什麼 Port? (Stdio vs TCP/IP)