TL;DR
ネットワーク上の別の端末にある手続きを呼び出して通信する仕組み。遠隔手続き呼び出しとも呼ぶ。
なぜ必要か
Wikipedia によると、RPC を使うと、遠隔での相互作用の細部を明示的に書かずに、別のアドレス空間(多くは別のコンピュータ)にあるサブルーチンを実行できる。プログラマは、ローカルのサブルーチン呼び出しとほぼ同じコードを書けばよい。
仕組み
REST API では、パスと HTTP メソッドを指定してリソースを操作する。一方、RPC ではパスやメソッドを意識する必要はなく、呼び出すメソッドの名前と引数を指定する。
クライアントは、実行する手続きと引数を要求メッセージとしてサーバに送り、サーバは結果を応答として返す。同期型ではクライアントは応答が届くまで待ち、非同期型では処理を続けてコールバックで結果を受け取る。多くの実装では、IDL からクライアントとサーバの間のインタフェースのコードを生成する。
例
- gRPC
- JSON-RPC
- XML-RPC
注意点
ローカルの呼び出しと違い、RPC は予測できないネットワークの問題で失敗することがある。クライアントには手続きが実際に実行されたかどうかが分からないので、呼び出しを繰り返してよいのは冪等な操作だけである。また、RPC の実装ごとに細かな違いがあり、互いに互換性がないことが多い。