1. ホーム
  2. rest

[解決済み] GRPCとRESTはどう違うのですか?

2022-10-16 04:59:47

質問

私はこれを読んでいます GRPCの説明 を読んでいて、この図に興味を持ちました。

トランスポート層はどのように機能するのですか?ネットワーク経由なら...なぜRPCと呼ばれるのでしょうか?もっと言えば、サービス層(httpリクエストを行うメソッドを持つクライアント内のクラス)のAPIを実装しているRESTとどう違うのでしょうか?

どのように解決するのですか?

トランスポート層は、TCP/IP の上で HTTP/2 を使用して動作します。これは、クライアントからサーバーへの単一の接続を利用できる低遅延 (高速) 接続を可能にします (これは接続をより効率的に使用し、サーバー リソースをより効率的に使用する結果になり得ます)。

HTTP/2 は、双方向の接続と非同期の接続もサポートしています。そのため、サーバーがクライアントと効率的に接触してメッセージを送信することが可能です(非同期の応答/通知など...)。

RESTとgRPCはどちらもクライアント/サーバースタブを生成できますが(RESTではswaggerのようなものを使用)、RESTには主要な「関数」呼び出し(または動詞)の限られたセットがあります。

+-----------+----------------+
| HTTP動詞|CRUD|(英語)
+-----------+----------------+
| POST|作成
| GET|読み出し
| PUT|更新/置換
| PATCH|更新/変更
| DELETE|削除
+-----------+----------------+

gRPCでは、同期/非同期、単方向/双方向(ストリーム)など、あらゆる種類の関数呼び出しを定義することができます。

gRPCを使用して、クライアントはローカルメソッドを呼び出します。プログラマーにとっては、ローカル コールを行っているように見えますが、下の層 (自動生成されたクライアント スタブ) はサーバーにコールを送信します。サーバーには、そのメソッドがローカルに呼び出されたように見えます。

gRPC はすべての基礎的な配管を引き受け、プログラミングパラダイムを単純化します。しかし、一部の熱心な REST 純粋主義者にとっては、これは過剰に複雑化したように見えるかもしれません。YMMV