「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>WebAPI]] * 目次 [#afe1d573] #contents *概要 [#u6653311] -[[RPC]]を実現するためにGoogleが開発したプロトコルの1つ。 -多くの言語でクロスプラットフォームで利用できる。 -一般的な利用シナリオ~ マイクロサービス型のアーキテクチャにおけるバックエンドサービスへの接続 --モバイルデバイスからの接続 --ブラウザからの接続 *詳細 [#z012ecd9] **前提 [#y856192e] ***[[Protocol Buffers]] [#o8ee69d5] -[[Protocol Buffers]]が前提と成る。 -故に、IDL(インターフェース定義言語)が必要になる。 ***[[HTTP/2>HTTP/2について調べてみた。]] [#h919c40d] [[HTTP/2>HTTP/2について調べてみた。]]をトランスポートとして利用する。 **機能 [#d786312f] ***認証 [#jd42dbb3] WebAPIの一般的な認証機構を流用する模様。 以下を参考にすると、WebAPIの一般的な認証機構を流用する模様。 -ASP.NET Core のための gRPC での認証と承認 | Microsoft Docs~ -参考 --ASP.NET Core のための gRPC での認証と承認 | Microsoft Docs~ https://docs.microsoft.com/ja-jp/aspnet/core/grpc/authn-and-authz -Go - gRPC での認証・認可を Interceptor を使って実装する - Qiita~ --Go - gRPC での認証・認可を Interceptor を使って実装する - Qiita~ https://qiita.com/yoheimuta/items/72d4b75f72d8913adc10 ***4 種類の通信方式 [#tc29f864] -Unary 通信~ 通常の関数コールのように扱える、~ 1 リクエスト / 1 レスポンス型の通信方法 -Server Streaming 通信 --クライアントが 1 度リクエストを送信し、~ サーバから複数回数のレスポンスを返す。 --プッシュ型の実装に利用できる。 -Client Streaming 通信~ クライアントから複数回数のリクエストを送信し、~ それらを読み込んだサーバから 1 度のレスポンスを待つ。 -Duplex Streaming 通信~ 双方向ストリーミングの通信方式(TCP/IPの生実装のような) ***ブロッキングとノンブロッキング [#k4590ce7] ***取り消しとタイムアウト [#s7464165] **[[WCF]]との関係 [#kef79868] バインディングなど、[[WCF]]と似ている所がある。 -gRPC vs. WCF - present~ https://tnakamura.hatenablog.com/entry/2018/07/10/grpc-versus-wcf -WCF 開発者向け ASP.NET Core gRPC - WCF 開発者向け gRPC | Microsoft Docs~ https://docs.microsoft.com/ja-jp/dotnet/architecture/grpc-for-wcf-developers/ ただ、上記を見ると、MSもgRPC推しであるもよう~ ([[.NET Core]]の[[WCF]]はマイグレ・パスの1つと思われる)。 *参考 [#j0370a4c] -gRPC - Wikipedia~ https://ja.wikipedia.org/wiki/GRPC -gRPC~ https://www.grpc.io/ -GRPCの実践と現状での利点欠点~ Go Conference 2016 Spring - Speaker Deck~ https://speakerdeck.com/kazegusuri/go-conference-2016-spring -gRPC / MagicOnion 入門 - xin9le.net~ https://blog.xin9le.net/entry/grpc-magiconion-intro --概要 --4 種類の通信方式 --プロジェクト構造と実装の前準備 --Unary 通信 --Server Streaming 通信 --Client Streaming 通信 --Duplex Streaming 通信 --独自型を送受信する --明示的にステータスコードを返す --ヘッダーの利用 --通信可能なデータ量を変更する --ログを出力する --送受信されているデータを可視化する --接続ユーザーを特定する --Unary 通信中にプッシュ配信 --複数ユーザーへのプッシュ配信 --切断検知と自動再接続 **Qiita [#na2eea79] -gRPCって何?~ https://qiita.com/oohira/items/63b5ccb2bf1a913659d6 -REST APIの設計で消耗している感じたときのgRPC入門~ https://qiita.com/disc99/items/cfca50a32240284578bb -社内のバックエンド開発にgRPCを導入してみた~ https://qiita.com/nozaq/items/9cd9bf7ee6118779bda9 -HTTP/2における双方向通信とgRPCとこれから~ https://qiita.com/namusyaka/items/71cf27fd3242adbf348c -いまさらだけどgRPCに入門したので分かりやすくまとめてみた~ https://qiita.com/gold-kou/items/a1cc2be6045723e242eb ---- Tags: [[:.NET開発]], [[:通信技術]], [[:.NET Standard]], [[:.NET Core]], [[:ASP.NET]], [[:ASP.NET Web API]]