gRPC on .NET supported platforms

By James Newton-King

This article discusses the requirements and supported platforms for using gRPC with .NET. There are different requirements for the two major gRPC workloads:

Wire-formats

gRPC takes advantage of advanced features available in HTTP/2. HTTP/2 isn't supported everywhere, but a second wire-format using HTTP/1.1 is available for gRPC:

  • application/grpc - gRPC over HTTP/2 is how gRPC is typically used.
  • application/grpc-web - gRPC-Web modifies the gRPC protocol to be compatible with HTTP/1.1. gRPC-Web can be used in more places. gRPC-Web can be used by browser apps and in networks without complete support for HTTP/2. Two advanced gRPC features are no longer supported: client streaming and bidirectional streaming.

gRPC on .NET supports both wire-formats. application/grpc is used by default. gRPC-Web must be configured on the client and the server for successful gRPC-Web calls. For information on setting up gRPC-Web, see Use gRPC in browser apps.

ASP.NET Core gRPC server requirements

Hosting gRPC services with ASP.NET Core requires .NET Core 3.x or later.

  • .NET 5 or later
  • .NET Core 3

ASP.NET Core gRPC services can be hosted on all operating system that .NET Core supports.

  • Windows
  • Linux
  • macOS†

macOS doesn't support hosting ASP.NET Core apps with HTTPS.

Supported ASP.NET Core servers

All built-in ASP.NET Core servers are supported.

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

†Requires .NET 5 and Windows 11 Build 22000 or Windows Server 2022 Build 20348 or later.

For information about configuring ASP.NET Core servers to run gRPC, see gRPC services with ASP.NET Core.

Azure services

†Azure App Service doesn't support hosting gRPC over HTTP/2 everywhere. Support is currently experimental. gRPC-Web is a compatible alternative that's available everywhere.

See How-to deploy a .NET 6 gRPC app on App Service for Azure App Service deployment information. This page discusses deploying gRPC that uses HTTP/2 to App Service which is experimental and not available in all Azure data centers.

Work is in-progress to improve support for gRPC with HTTP/2 in Azure App Service. For more information, see this GitHub issue.

.NET gRPC client requirements

The Grpc.Net.Client package supports gRPC calls over HTTP/2 on .NET Core 3 and .NET 5 or later.

Limited support is available for gRPC over HTTP/2 on .NET Framework. Other .NET versions such as UWP, Xamarin and Unity don't have required HTTP/2 support, and must use gRPC-Web instead.

The following table lists .NET implementations and their gRPC client support:

.NET implementation gRPC over HTTP/2 gRPC-Web
.NET 5 or later ✔️ ✔️
.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 ✔️
Universal Windows Platform 10.0.16299 ✔️
Unity 2018.1 ✔️

†.NET Framework requires WinHttpHandler to be configured and Windows 10 Build 19622 or later, which may require the use of a Windows Insider build.

Using Grpc.Net.Client on .NET Framework or with gRPC-Web requires additional configuration. For more information, see Use gRPC client with .NET Standard 2.0.

Additional resources