「[[マイクロソフト系技術情報 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]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS