Visual StudioではなくVSCODE上でgRPC環境の構築を簡潔させます。今回は初歩的な開通テストなのでHTTPS化はしません。前提条件としてDotNetCLIが使える状態であること。
# サーバー側の構築
# テンプレの作成
まずターミナル上でdotnet new grpc -o [プロジェクト名]
と打ち込んで実行する。
プロジェクト名のディレクトリが出来るのでそこをワークスペースとしてVSCODEを開く。
すると初めからサーバーは既にほぼ動く状態に出来上がっている。
# launchSettings.jsonの修正
今回はHTTPのみのテストなのでHTTPSの部分をコメントアウトするか削除する。しないとエラーで起動しない。
# クライアント側の構築
別の場所にdotnet new console -o [プロジェクト名]
として、新しくワークスペースを作る。
# protosの作成
プロジェクトのトップディレクトリにprotosディレクトリを作成し、先ほどのサーバー側で作られたgreet.protoをコピーする
namespaceはクライアント側のものと同じClientとする。
.protoファイルのコピーが終わったら、プロジェクトファイル(.csproj)に下記の追記をする。
# 必要なパッケージをインストールする
必要なパッケージは3つ
- ・ Grpc.Net.Client
- ・ Google.Protobuf
- ・ Grpc.Tools
パッケージのインストールにはNuget Package Managerが便利です。
# C#コードの作成
次にC#コードの記述ですが、一旦これだけ書いたところでビルドする。
まず一度、dotnet build
でビルドしたところで残りのコードを記述する。この、「先に一度ビルドをする」ことでprotobufに対するC#コードが自動生成される。
これをせずに一気に全てのコードを書いてしまうと、Greeterクラスが存在せずエラーになってしまう。
ビルドが成功したら残りのコードも書きましょう。
このサンプルでは、gRPCクライアントを作成するために、GreeterClientクラスを使用しています。このクラスは、gRPCサーバーとの通信に必要な通信チャネルを管理します。
gRPCクライアントが作成されたら、SayHelloAsyncメソッドを使用して、gRPCサーバーにリクエストを送信することができます。このメソッドは、非同期で実行されるため、gRPCサーバーからのレスポンスを待つことができます。
# 実行結果
まずサーバー側を起動して待ち受け状態にする。 次にクライアント側を実行する。結果は下記のとおり。
以上で、dotnetを用いたc# gRPCの開通テストは終わりです。