.NET Core の gRPC とか C# の Firestore クライアントを触る

仕事で扱っていないフレームワーク・言語になにか触れてみようと思い、.NET Core (C#) を触ってみた。

C# は学生時代に Windows 向けのアプリケーションを授業で作ったとき以来に書く。当時はまさか、.NET のクロスプラットフォームオープンソースな実装が使える時代が来るとは全く思っていなかった。

とりあえず gRPC のサーバーを作ってみようと思い、以下のチュートリアルをやってみる。

docs.microsoft.com

gRPC が .NET Core にシームレスに統合されていて感動。Visual Studio Code .NET Core SDK (dotnet コマンド) の組み合わせでやったけれど、サーバーの起動まわり以外はハマることなく、さくさく進めることができた。チュートリアル中でもちゃんとケアしてくれているけれど、Mac OS では HTTP/2 over TLS でサーバーを起動できないので注意( .NET Core での gRPC のトラブルシューティング | Microsoft Docs を参照)、TLS を外したら次はクライアントで .NET Core での gRPC のトラブルシューティング | Microsoft Docs でハマるので注意。

DI コンテナも標準で ASP.NET Core に入っていてうれしい ( ASP.NET Core での依存関係の挿入 | Microsoft Docs )

gRPC のチュートリアルを一通りこなして、次は Firestore のクライアントを触ってみることにした ( Cloud Firestore を使ってみる  |  Firebase )。 ドキュメントを試しに書き込んでみたのだけど await で実行がフリーズしてしまった。調べたら、Firestore のクライアントが依存している gRPC のバージョンと、.NET Core が依存している gRPC のバージョンで互換性がないのが原因らしい。

github.com

次のメジャーバージョンでアップデートするそうなので( Major Version Plan | Google Cloud APIs )、一回休み。対応されるまでは、Entity Framework と MySQL の組み合わせを試してみる。