.NET での gRPC でサポートされているプラットフォーム

作成者: James Newton-King

この記事では、.NET で gRPC を使用するための要件と、サポートされているプラットフォームについて説明します。 次の 2 つの主な gRPC ワークロードにはさまざまな要件があります。

ワイヤ形式

gRPC では、HTTP/2 で利用できる高度な機能が活用されます。 HTTP/2 はどこでもサポートされているわけではありませんが、gRPC では、HTTP/1.1 を使用した 2 番目のワイヤ形式を利用できます。

  • application/grpc - HTTP/2 による gRPC は、一般的な gRPC の使用方法です。
  • application/grpc-web - gRPC-Web では、HTTP/1.1 と互換性を持つように gRPC プロトコルが変更されます。 gRPC-Web はより多くの場所で使用できます。 gRPC-Web は、HTTP/2 を完全にサポートしていなくても、ブラウザー アプリやネットワークで使用できます。 2 つの高度な gRPC 機能がサポートされなくなりました。クライアント ストリーミングと双方向ストリーミングです。

.NET での gRPC では、両方のワイヤ形式がサポートされています。 application/grpc が既定で使用されます。 gRPC-Web の呼び出しを正常に行うには、クライアントとサーバーで gRPC-Web を構成する必要があります。 gRPC-Web の設定方法について詳しくは、「ブラウザー アプリでの gRPC の使用」を参照してください。

ASP.NET Core gRPC サーバーの要件

ASP.NET Core で gRPC サービスをホストするには、.NET Core 3.x 以降が必要です。

  • .NET 5 以降
  • .NET Core 3

ASP.NET Core gRPC サービスは、.NET Core でサポートされるすべてのオペレーティング システムでホストできます。

  • Windows
  • Linux
  • macOS†

macOS では、HTTPS を使用した ASP.NET Core アプリのホストがサポートされていません

サポートされる ASP.NET Core サーバー

すべての組み込み ASP.NET Core サーバーがサポートされています。

  • Kestrel
  • TestServer
  • IIS†
  • HTTP.sys‡

†IIS では、.NET 5 および Windows 10 ビルド 20300.1000 以降が必要です。
‡HTTP.sys では、.NET 5 および Windows 10 ビルド 19529 以降が必要です。

以前のバージョンの Windows 10 ビルドでは、Windows Insider ビルドの使用が必要になる場合があります。

gRPC を実行するために ASP.NET Core サーバーを構成する方法の詳細については、ASP.NET Core を使用した gRPC サービス に関する記事を参照してください。

Azure サービス

†Azure App Service では、HTTP/2 による gRPC のホストがサポートされていません。 gRPC-Web は互換性のある代替手段です。

Azure App Service では、HTTP/2 を使用した gRPC のサポートを向上させるための作業が進行中です。 詳細については、次を参照してください。この GitHub の問題します。

.NET gRPC クライアントの要件

Grpc.Net.Client パッケージでは、.NET Core 3 と .NET 5 以降で HTTP/2 を経由した gRPC 呼び出しをサポートしています。

.NET Framework では gRPC over HTTP/2 に制限付きサポートを利用できます。 UWP、Xamarin、Unity などのその他の .NET バージョンには必要な HTTP/2 サポートはなく、gRPC-Web を使用する必要があります。

次の表に、.NET の実装と、その gRPC クライアントのサポートを示します。

.NET 実装 gRPC over HTTP/2 gRPC-Web
.NET 5 以降 ✔️ ✔️
.NET Core 3 ✔️ ✔️
.NET Core 2.1 ✔️
.NET Framework 4.6.1 ⚠️† ✔️
Blazor WebAssembly ✔️
Mono 5.4 ✔️
Xamarin.iOS 10.14 ✔️
Xamarin.Android 8.0 ✔️
ユニバーサル Windows プラットフォーム 10.0.16299 ✔️
Unity 2018.1 ✔️

† .NET Framework では、WinHttpHandler の構成と、Windows 10 ビルド 19622 以降が必要です。これには、Windows Insider ビルドの使用が必要な場合があります。

.NET Framework または gRPC-Web で Grpc.Net.Client を使用するには、追加の構成が必要です。 詳細については、「.NET Standard 2.0 での gRPC クライアントの使用」を参照してください。

その他の技術情報