.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 の設定については、「ASP.NET Core gRPC アプリでの gRPC-Web」を参照してください。

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†

†.NET 5 および Windows 11 ビルド 22000 または Windows Server 2022 ビルド 20348 以降が必要です。

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

Azure サービス

†Azure App Service では、HTTP/2 による gRPC のホストが一切サポートされていません。 サポートは現在、試験段階です。 gRPC-Web は、どこでも利用できる互換性のある代替手段です。

Azure App Service へのデプロイに関する情報については、「App Service に .NET 6 gRPC アプリをデプロイする方法」を参照してください。 このページでは、HTTP/2 を使用する gRPC を App Service にデプロイする方法について説明します。これは実験段階であり、すべての Azure データ センターで利用できるとは限りません。

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 11 以降が必要です。

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

重要

gRPC-Web をサポートするには、クライアント "" サーバーが必要です。gRPC-Web は、ASP.NET Core gRPC サーバーによって迅速に構成できます。 その他の gRPC サーバー実装では、gRPC-Web をサポートするためにプロキシが必要です。

その他のリソース