なんかいろいろと書いてくブログ

関東のどこかで働く、一般人

【メモ】gRPCについて適当にまとめ

Azure App Serviceで、gRPCのサポートがPublic Previewになったらしく

Azureにどっぷり使っている弊社でもgRPCに触れる機会が近づいている気がするので、

gRPCについてメモがてら適当にまとめる

なので、この記事の精度には期待しない方がよい

gRPC support on App Service now in Public Preview - Azure App Service

参考

とりあえず、この記事よむより

↓ 読んだ方が良い

MicroSoft Document

https://docs.microsoft.com/ja-jp/dotnet/architecture/cloud-native/grpc

本家Document

https://grpc.io/

概略

  • RPC(Remote Procedure Call))を発展させたフレームワーク プログラムがネットワーク越しの別のプログラムを呼び出す手法である RPC を発展させたやつ

  • クライアント - サーバーモデル採用しており、リクエストを受信した API はリクエストに応じた処理結果を返す

メリット

ドキュメント見た感じ、HTTP/2 を使用しいることが大きな利点っぽい

以下引用

  • データ転送のためのバイナリ フレーミング プロトコルです。テキストベースの HTTP 1.1 とは異なります。
  • 同じ接続を介して複数の並列要求を送信するための多重化のサポート。HTTP 1.1 の場合、処理が一度に 1 つの要求および応答メッセージに制限されています。
  • クライアント要求とサーバー応答の両方を同時に送信するための双方向全二重通信。
  • 大規模なデータセットを非同期にストリーミングするための要求と応答を可能にする組み込みのストリーミング。
  • ネットワークの使用量を減らすヘッダー圧縮

プロトコル バッファー

IDLを使用しようして .protoファイルを実装する 実装するのは、メソッドとI/O

異なる言語でも.protoは使用しすることができる? その後、protocによって、コードを生成してくれる また、メッセージはバイナリとしてシリアル化される

本当はgRPCを.Netで触るとこまで行きたかったが、手元のMacに.Net6 SDKが入っていなかったので 一旦断念