.NET5.0 リリースにより .NET Framework と .NET Core が統合され、.NET5.0 は Linux や Mac などの環境できも使用できるようになった。
現在の最新.NETは、2023年11月にリリースされた .NET8.0 となります。
.NET Framework 4.8 と .NET 5.0 は全く違う、両者の扱い方の注意点を解説します
(注意:2024年1月15日更新->.NET5.0はサポート終了しました。サンプルコードは.NET8.0に更新しました)
この統合の為に、古い機能の一部が廃止された。
その中に WCF (Windows Communication Foundation) がある。
業務システム開発などでスマートクライアントなどの機能を使用しているところは、WCFをクライアントとサーバーの通信に使用している所も多いと思う。
Microsoftからの .NET5.0 リリースの説明では WCF と同じ機能を実現するなら gRPC を使用する事が推奨されている。
古いシステムを新しい .NET5.0 上で再構築するとなると通信部分を WCF から、 gRPC に変更する必要がある。
そこで、 gRPC について最も簡単なサンプルコードを作成してみた。
主にコンソールアプリとWPFアプリで gRPCサービスと通信するサンプルである。
gRPCサービス一つと、これと通信するコンソールアプリと、WPFアプリの最も単純なサンプルだ。
最も単純なやり方なのだが、やり方を調べるのに意外に面倒だったので、ここで共有したいと思う。
調べるのが面倒な理由として、gRPCはC#以外にもGOやJavaやRubyなど様々な言語で使用できる為、目的以外の言語の情報が多く検索されてしまう。
また同様の理由で初心者がgRPCのサンプルを作るのに都合の良いサイトが見つかりにくい点がある。
また、Microsoftの公式解説も、微妙に分かりにくいという理由もある。
ASP.NET Core 向けの解説が優先されて、コンソールアプリとWPFアプリのサンプルにたどり着き難いという問題もある。
gRPCサービスとコンソールアプリの解説と、WPFアプリの解説は以下のリンクで別々に解説する。
使用するgRPCサービスは同じものだ。
単項メソッドを追加したので、その解説とサンプルコードを掲載する。2021-02-04追記。
APIを追加する前にProtocol Buffers を簡単に解説する
gRPCサービスに簡単な関数を追加してみる(サンプルコード)
2021-02-16追記。日付型をgRPCサービスで通信するサンプルを追加した。
C#によるgRPC通信でのTimeStampとDateTimeの解説
日本国内のみ、C#のDateTimeだけで扱うgRPCサンプルコード
国際対応で、C#のDateTimeOffsetで扱うgRPCサンプルコード
2021-02-23と24と25に追記。ストリーミングメソッドのサンプルを追加した。
C#によるgRPC通信のサーバーストリーミングのサンプルコード