第2回からは、共通の機能を持ったgRPCサービスの開発を通じ、各種のプラットフォームとプログラミング言語によるサービス実装、クライアントからの呼び出し方法の基本について紹介していきます。第2回は、C#と.NETにおけるgRPCサーバの開発手順を紹介し、その動作検証に使える汎用のgRPCクライアントも紹介します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載のサンプルコードをGitHubで公開しています。こちらからダウンロードしてみてください。
.NETは、Microsoftが提供するアプリケーションの開発、実行のためのプラットフォームです。.NET Frameworkという名称で、長らくWindows専用と言えるような状況でしたが、.NET Coreのリリースによりマルチプラットフォーム化とオープンソース化が進みました。現在は、WindowsをはじめとしてmacOS、Linuxなどで開発が可能で、これらに加えてiOSやAndroid OSのアプリケーションも開発が可能になっています。最新版は、2022年11月にリリースされた.NET 7です。
本稿作成時点でバージョン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では、以下の4つの通信方式がサポートされます。ただし、実際に使えるかというのは、通信路のプロトコル、プラットフォーム、プログラミング言語における実装に依存します(基本となるUnaryは必ず使える)。
今回から、具体的なプログラミング言語を使ったgRPCサーバとクライアントを作成していきます。作成するアプリケーションは、連載第1回で作成したプロトコル定義ファイルを使った、書籍情報検索サービスのサーバとクライアントです。そのためにいくつかの必要なツールをあらかじめ準備しておきます。macOSを基本に解説しますが、Windowsにも必要に応じて触れます。なお、あくまでも学習用としての位置付けなので、サーバとクライアントは同じホストに配置します。
ソースコードの作成とコンパイル、実行のために、本連載ではコードエディタとしてVSCode(Visual Studio Code)の利用を想定します。複数のプロジェクトの取り回しに便利ですし、VSCode内に複数のターミナルを開いて利用できるからです。VSCodeをインストールしていないという方は、この機会にVSCodeをインストールして、日本語化も実施しておくことをおすすめします。VSCodeのインストールについては、@ITの記事を参考にしてください(Windows版です)。
プログラマー以外にもおすすめ 「Visual Studio Code」のインストールから基本設定まで
また、今回はC#言語による開発になりますので、C#のための拡張機能「C# for Visual Studio Code」をインストールしておくこともおすすめします。
Copyright © ITmedia, Inc. All Rights Reserved.