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
概略
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が入っていなかったので 一旦断念