C#でgRPCサービスを開発する――.NETとgRPCクライアントEvansスキマ時間にこっそり学ぶ「gRPC」入門(2)

第2回からは、共通の機能を持ったgRPCサービスの開発を通じ、各種のプラットフォームとプログラミング言語によるサービス実装、クライアントからの呼び出し方法の基本について紹介していきます。第2回は、C#と.NETにおけるgRPCサーバの開発手順を紹介し、その動作検証に使える汎用のgRPCクライアントも紹介します。

» 2022年12月09日 05時00分 公開

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「スキマ時間にこっそり学ぶ「gRPC」入門」のインデックス

連載:スキマ時間にこっそり学ぶ「gRPC」入門

 本連載のサンプルコードをGitHubで公開しています。こちらからダウンロードしてみてください。


.NETにおけるgRPCアプリケーションの概要

 .NETは、Microsoftが提供するアプリケーションの開発、実行のためのプラットフォームです。.NET Frameworkという名称で、長らくWindows専用と言えるような状況でしたが、.NET Coreのリリースによりマルチプラットフォーム化とオープンソース化が進みました。現在は、WindowsをはじめとしてmacOS、Linuxなどで開発が可能で、これらに加えてiOSやAndroid OSのアプリケーションも開発が可能になっています。最新版は、2022年11月にリリースされた.NET 7です。

【補足】.NET Coreと.NET

 本稿作成時点でバージョン7がリリースされている.NETは、バージョン3.1までは.NET Coreと呼ばれており、その後継のバージョン5から.NETというCoreの語を含まない名称になりました。.NET Frameworkも、Windows専用の実装として.NETに含まれており、サポートが継続されています。

 .NETでは、多岐にわたるアプリケーションの開発が可能で、その一つとしてgRPCアプリケーションもサポートされています。.NETでサポートされているプラットフォーム(Windows、macOS、Linux)であれば、それらで稼働するgRPCアプリケーションの開発が可能です。なお、プログラミング言語はC#のみがサポートされます。

 gRPCでは、通信路はHTTP/2が標準ですが、.NETにおけるgRPCでは既定であるHTTP/2(application/grpc)に加えてHTTP/1.1(application/grpc-web)もサポートされます。後者はHTTP/2をサポートしない環境で有用ですが、クライアントサイドストリーミングと双方向ストリーミングが使えないという制約があります。

 .NETの組み込みサーバ(Kestrel、IISなど)ではHTTP/2をサポートしますので、本稿ではHTTP/2を使う既定の実装について紹介していきます。

【補足】gRPCにおける通信方式

 gRPCでは、以下の4つの通信方式がサポートされます。ただし、実際に使えるかというのは、通信路のプロトコル、プラットフォーム、プログラミング言語における実装に依存します(基本となるUnaryは必ず使える)。

  • Unary……1リクエストに対して1レスポンスが返る
  • クライアントサイドストリーミング……複数リクエストに対して1レスポンスが返る
  • サーバサイドストリーミング……1リクエストに対して複数レスポンスが返る
  • 双方向ストリーミング……複数リクエストに対して複数レスポンスが返る

開発環境の準備

 今回から、具体的なプログラミング言語を使ったgRPCサーバとクライアントを作成していきます。作成するアプリケーションは、連載第1回で作成したプロトコル定義ファイルを使った、書籍情報検索サービスのサーバとクライアントです。そのためにいくつかの必要なツールをあらかじめ準備しておきます。macOSを基本に解説しますが、Windowsにも必要に応じて触れます。なお、あくまでも学習用としての位置付けなので、サーバとクライアントは同じホストに配置します。

VSCodeをインストールする

 ソースコードの作成とコンパイル、実行のために、本連載ではコードエディタとしてVSCode(Visual Studio Code)の利用を想定します。複数のプロジェクトの取り回しに便利ですし、VSCode内に複数のターミナルを開いて利用できるからです。VSCodeをインストールしていないという方は、この機会にVSCodeをインストールして、日本語化も実施しておくことをおすすめします。VSCodeのインストールについては、@ITの記事を参考にしてください(Windows版です)。

プログラマー以外にもおすすめ 「Visual Studio Code」のインストールから基本設定まで

 また、今回はC#言語による開発になりますので、C#のための拡張機能「C# for Visual Studio Code」をインストールしておくこともおすすめします。

Evansをインストールする

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。