20191024 Get Start gRPC with ASP.NET
- 2. 自己紹介
Senior Technical Support Engineer @ New Relic K.K.
? アプリケーションプラットフォーム監視(APM)のSaaSです
? 日本語サポート開始しました
? New Relicに関する勉強会の要望も受けます
Microsoft MVP for Azure
? .NET Core on Linux, Kubernetes, Azureなどのお仕事してました
? Visual StudioやQ#などにも興味があります
ソーシャル活動
? Twitter: @tanaka_733
? Blog: 銀の光と碧い空
- 4. gRPC + ASP.NET Coreの
主なターゲット
新規でRPCスタイルのサーバーサイドを開発したい
? 新規でASP.NET Coreでサーバー作るなら、
通常のREST API、SignalRとともに検討したい
WCFからの移行
? .NET Frameworkの一部であるWCFは基本的に新機能はもうこない
? のでMicrosoftとしてはgRPC + ASP.NET Coreに移行してほしい雰囲気を感じる
? MSからeBookも出ています
? https://docs.microsoft.com/ja-jp/dotnet/architecture/grpc-for-wcf-
developers/?WT.mc_id=DT-MVP-5000211
? 個人的にはサポートなくなるわけじゃないし、WCFのままでいいという人もいると思いますが…
- 9. .proto から C# クラスの自動生成
サーバーサイド
? テンプレートを使う場合は設定済み。それ以外の場合はGrpcServicesをServerに指定する
クライアントサイド
? ServicesをClientに指定して、手動でプロジェクトに設定。
WPFのみ既知の問題で動作しないため、クラスライブラリ経由。
Grpc.Tools をNuGetから参照に追加
Protobug アイテムをcsprojファイルに追加
? GrpcServicesはServer, Client, Both(デフォルト), Noneを指定可能
<ItemGroup>
<Protobuf Include="Protos?greet.proto" GrpcServices="Server" />
</ItemGroup>
- 19. まとめ
ASP.NET Core 3でgRPCがサポートされました!
? C#で公式パッケージでgRPCサービス、クライアントが開発できます
? .protoをがりがり書いていく + C#のクラス自動生成
ただ動かすだけならすぐできるけど…
? 運用を想定すると考慮していないといけないことたくさん
? ASP.NET CoreがというよりgRPCを使う場合に言えそう
? どこで動かすかが、なにをフロントのLBとするかが一番の課題?
? C#同士なら、MagicOnionでgRPCではなくC#で記述も検討