【gRPC】VSCODEとDotNetでgRPC環境を構築してみる
投稿日2023-02-05
更新日2024-05-16
目次(タップして移動)
Visual StudioではなくVSCODE上でgRPC環境の構築を簡潔させます。今回は初歩的な開通テストなのでHTTPS化はしません。前提条件としてDotNetCLIが使える状態であること。
サーバー側の構築
テンプレの作成
まずターミナル上でdotnet new grpc -o [プロジェクト名]
と打ち込んで実行する。
プロジェクト名のディレクトリが出来るのでそこをワークスペースとしてVSCODEを開く。
すると初めからサーバーは既にほぼ動く状態に出来上がっている。
Protosにある.protoファイルはクライアント側でも使います。
launchSettings.jsonの修正
今回はHTTPのみのテストなのでHTTPSの部分をコメントアウトするか削除する。しないとエラーで起動しない。
クライアント側の構築
別の場所にdotnet new console -o [プロジェクト名]
として、新しくワークスペースを作る。
protosの作成
プロジェクトのトップディレクトリにprotosディレクトリを作成し、先ほどのサーバー側で作られたgreet.protoをコピーする
namespaceはクライアント側のものと同じClientとする。
//greet.proto syntax = "proto3"; //namespaceをClientに変更する option csharp_namespace = "Client"; package greet; // The greeting service definition. service Greeter { // Sends a greeting rpc SayHello (HelloRequest) returns (HelloReply); } // The request message containing the user's name. message HelloRequest { string name = 1; } // The response message containing the greetings. message HelloReply { string message = 1; }
.protoファイルのコピーが終わったら、プロジェクトファイル(.csproj)に下記の追記をする。
必要なパッケージをインストールする
必要なパッケージは3つ
- Grpc.Net.Client
- Google.Protobuf
- Grpc.Tools
パッケージのインストールにはNuget Package Managerが便利です。
C#コードの作成
次にC#コードの記述ですが、一旦これだけ書いたところでビルドする。
using Grpc.Net.Client; namespace Client { class Program { static async Task Main(string[] args) { using var channel = GrpcChannel.ForAddress("http://localhost:5200"); } } }
まず一度、dotnet build
でビルドしたところで残りのコードを記述する。この、「先に一度ビルドをする」ことでprotobufに対するC#コードが自動生成される。
これをせずに一気に全てのコードを書いてしまうと、Greeterクラスが存在せずエラーになってしまう。
ビルドが成功したら残りのコードも書きましょう。
using Grpc.Net.Client; namespace Client { class Program { static async Task Main(string[] args) { using var channel = GrpcChannel.ForAddress("http://localhost:5200"); var client = new Greeter.GreeterClient(channel); var reply = await client.SayHelloAsync(new HelloRequest { Name = "gazushige" }); Console.WriteLine("Response: " + reply.Message); await channel.ShutdownAsync(); Console.WriteLine("Press any key to exit..."); Console.ReadKey(); } } }
このサンプルでは、gRPCクライアントを作成するために、GreeterClientクラスを使用しています。このクラスは、gRPCサーバーとの通信に必要な通信チャネルを管理します。
gRPCクライアントが作成されたら、SayHelloAsyncメソッドを使用して、gRPCサーバーにリクエストを送信することができます。このメソッドは、非同期で実行されるため、gRPCサーバーからのレスポンスを待つことができます。
実行結果
まずサーバー側を起動して待ち受け状態にする。 次にクライアント側を実行する。結果は下記のとおり。
以上で、dotnetを用いたc# gRPCの開通テストは終わりです。
サイト管理者
がずしげ
- アプリ開発
- 株式投資、等
関連記事
最新記事
スポンサーリンク
このサイトをシェアする