· 

gRPCやってみる(2)

gRPCってのがあるらしい。のつづき。まずはここに書いてあることを自己流の味付けで試してみる。

今回は参考サイトの

.NET コンソール アプリで gRPC クライアントを作成する

ってとこからです。

こんな感じで、コンソールプロジェクトを作成して、VSCodeを起動する。

まーた英語でわけわからんこと言ってくるので、Yesを押す。

やはり、.vscodeっていうサブフォルダができる。

で、参考サイトによると、NuGetパッケージなるものが必要だとある。自宅だといいけど、proxyの中からNuGetってどうすりゃいいんやろ。まぁそれは必要な時考える。とりあえず参考サイト通りにdotnet addする。プロジェクト名が自己流なので、

dotnet add grpc-study1-cli.csproj package Grpc.Net.Client

ってする。

なんかえらいこっちゃになった。次に

dotnet add grpc-study1-cli.csproj package Google.Protobuf

ってする。

まぁこうなった。次に

dotnet add grpc-study1-cli.csproj package Grpc.Tools

ってする。

まぁこうなった。

何かがインストールされたんだろう。そしてそれらをインポートする設定がcsprojに書き込まれたんだろう。

前回作ったgrpc-study1-srvプロジェクトフォルダのProtosをコピーして、

今回のgrpc-study1-cliフォルダにペースト。

こうなる。

で、VSCodeで開く。

参考サイトによると、

option csharp_namespace

を今回作成中のclientプロジェクト名grpc_study1_cliにするらしい。

で、csprojに

<ItemGroup>

  <Protobuf Include="Protos\greet.proto" GrpcServices="Client" />

</ItemGroup>

を追加するらしい。

で、参考サイトによると、Program.csを記述する。基本的には参考サイトをコピペ。今回は参考サイトと違う部分があるので、そこはそう修正する。プロトコル指示とポート番号もサーバーアプリの設定にあわせて修正する。

で、サーバー側のVSCodeで前回コメントアウトした

"Protocols": "Http2"

を有効にして、

さらに、appsettings.Development.jsonに

"Microsoft.AspNetCore.Hosting": "Information",

"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"

を追加、

 

で、grpc-study1-srv.csproj

を選んだ状態で、再生ボタンを押してサーバーアプリを起動しておく。

こういう状態。

で、クライアント側のVSCodeで

grpc-study1-cli.csproj

を選んで再生ボタンを押すと、

Greeting: Hello GreeterClient

って表示があるので、RPC自体は成功していると思われる。

見た感じ、

Console.ReadKey();

がエラー吐いている。

サーバー側コンソールは、

となっているので、通信を受けて動作したことがわかる。

で、クライアント側のエラーは、コンソールがないのでキーを読めないぜって内容っぽいので、VSCodeを起動した黒い画面で実行してみる。

となって、エラーなく実行できた。

というわけで、C#って感じもなく参考サイトをなぞっただけの検証は終わり。まぁここからが悶絶なんでしょう。gRPCってうまくいけば、DLLアーキテクチャ問題だけでなく、あんな問題も、こんな問題も解決できるやん、、、って期待が大きい。しばらく取り組んでみるっ。

 

、、、って思っても時間を捻出できない。酒も飲まんといかんし、野球も見らんといかんし、★6バトルをやってあげんといかんし。人生は短い。今になると若い時になんであんなことに時間使っとったんやと思うこともたくさんある。未来は見えないのでしょうがない。そして、未来は見えないので酒飲んじゃうし野球見ちゃうし★6バトルを手伝っちゃうし、、、よくよく考えると、ちょっと焦るね。