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

第3回は、連載第2回で作成したシンプルな既定のサーバアプリケーションに具体的なサービスを実装し、それにアクセスするクライアントアプリケーションを作成します。サーバアプリケーションと同じくC#と.NET 6で開発していきます。プロトコル定義ファイルはサーバとクライアントで共有できること、クライアントは手続きの呼び出しのみに集中すればよいことなどを紹介します。

» 2023年01月13日 05時00分 公開

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

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

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

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


書籍情報検索サービスをテーマに、gRPCを使ったアプリケーションを実装してみる

 連載第2回では、.NETにおけるgRPCのサポートを紹介しました。既定のサーバアプリケーションを作成し、それを汎用(はんよう)のgRPCクライアントEvansからアクセスして、動作を確認しました。さらに、サーバアプリケーションの基本的な構造にも触れました。

 今回は、第2回の内容を踏まえた上でgRPCサーバとクライアントを実装していきます。作成するアプリケーションのテーマは「書籍情報検索サービス『BookInfo』」です。BookInfoは、静的に用意されたリストからキーワード検索し、結果を返すだけというシンプルなものですが、gRPCを用いて独自のサービスを実装したいときの手順として参考になるでしょう。

図 書籍情報検索サービスBookInfoの構成

 作業の内容は、既定のファイルを複製し、BookInfoサービスに合わせたクラス名などを修正していくというイメージです。大まかに、以下の手順でサービスを実装していきます。

  • プロトコル定義ファイルの配置と修正(Protos/bookinfo.protoファイル)
  • プロジェクト設定ファイルの修正とビルド(GrpcBookInfo.csprojファイル)
  • サービス記述ファイルの複製と修正(Services/BookInfoService.csファイル)
  • アプリケーション起動時のサービスの登録(Program.csファイル)
  • 検索手続きの拡張(Services/BookInfoService.csファイル)

プロトコル定義ファイルを配置して修正する

 BookInfoサービスのためのプロトコル定義ファイルをProtosフォルダに配置します。連載第1回で作成したbook.protoファイルを、bookinfo.protoファイルとしてProtosフォルダにコピーします。そして、以下のように修正しておきます。変更の多くは、C#のクラス名やフィールド名の衝突や混同を避けるためのものです。

// パッケージ名を変更する:AtmarkIt⇒bookinfo
package bookinfo;
…略…
// GreeterService.csと同じ内容とするためにオプションを追加する
option csharp_namespace = "GrpcBookInfo";
…略…
// 名前の衝突を避けるためにBook⇒BookItemとメッセージ名を変更する
message BookItem {
  …略…
}
…略…
message SearchResponse {
  int32 status_code = 1;
  BookItem item = 2;	// メッセージ名BookItemに合わせて変更
}
// 名前の衝突を避けるためBookService⇒BookInfoと変更する
service BookInfo {
  rpc Search(SearchRequest) returns (SearchResponse);
}
Protos/bookinfo.proto

プロジェクト設定ファイルを修正してビルドする

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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