AspNetCore.Docs/aspnetcore/grpc/supported-platforms.md

5.2 KiB

title author description monikerRange ms.author ms.date no-loc uid
gRPC on .NET supported platforms jamesnk Learn about the supported platforms for gRPC on .NET. >= aspnetcore-3.0 jamesnk 3/11/2021
Home
Privacy
Kestrel
appsettings.json
ASP.NET Core Identity
cookie
Cookie
Blazor
Blazor Server
Blazor WebAssembly
Identity
Let's Encrypt
Razor
SignalR
grpc/supported-platforms

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 xref:grpc/browser.

ASP.NET Core gRPC server requirements

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

[!div class="checklist"]

  • .NET 5 or later
  • .NET Core 3

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

[!div class="checklist"]

  • 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.

[!div class="checklist"]

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

†IIS requires .NET 5 and Windows 10 Build 20300.1000 or later.
‡HTTP.sys requires .NET 5 and Windows 10 Build 19529 or later.

The preceding Windows 10 Build versions may require the use of a Windows Insider build.

For information about configuring ASP.NET Core servers to run gRPC, see xref:grpc/aspnetcore#server-options.

Azure services

[!div class="checklist"]

†Azure App Service doesn't support hosting gRPC over HTTP/2. gRPC-Web is a compatible alternative.

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 xref:System.Net.Http.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 xref:grpc/netstandard.

Additional resources