gRPC em plataformas com suporte do .NET

Por James Newton-King

Este artigo discute os requisitos e as plataformas com suporte para o uso do gRPC com o .NET. Há diferentes requisitos para as duas principais cargas de trabalho do gRPC:

Formatos com fio

O gRPC aproveita os recursos avançados disponíveis no HTTP/2. Não há suporte para HTTP/2 em todos os lugares, mas um segundo formato de transmissão usando HTTP/1.1 está disponível para o gRPC:

  • application/grpc – o gRPC via HTTP/2 é a forma como o gRPC é usado normalmente.
  • application/grpc-web – o gRPC-Web modifica o protocolo do gRPC para ser compatível com o HTTP/1.1. O gRPC-Web pode ser usado em mais locais. O gRPC-Web pode ser usado por aplicativos de navegador e em redes sem suporte completo para HTTP/2. Não há mais suporte para dois recursos avançados do gRPC: streaming de cliente e streaming bidirecional.

O gRPC no .NET dá suporte a ambos os formatos com fio. application/grpc é usado por padrão. O gRPC-Web deve ser configurado no cliente e no servidor para chamadas do gRPC-Web bem-sucedidas. Para obter informações sobre como configurar o gRPC-Web, confira gRPC-Web em aplicativos gRPC do ASP.NET Core.

Requisitos do servidor do gRPC do ASP.NET Core

A hospedagem de serviços gRPC com o ASP.NET Core requer o .NET Core 3.x ou posterior.

  • .NET 5 ou posterior
  • .NET Core 3

Os serviços gRPC do ASP.NET Core podem ser hospedados em todo o sistema operacional ao qual o .NET Core dá suporte.

  • Windows
  • Linux
  • macOS

Servidores ASP.NET Core com suporte

Todos os servidores ASP.NET Core internos têm suporte.

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

†Requer .NET 5 e Windows 11 Build 22000 ou Windows Server 2022 Build 20348 ou posterior.

Para obter informações sobre como configurar servidores ASP.NET Core para executar o gRPC, confira Serviços gRPC com ASP.NET Core.

Serviços do Azure

†O gRPC requer um ambiente baseado em Linux no Serviço de Aplicativo do Azure. Confira Como implantar um aplicativo gRPC do .NET 6 no Serviço de Aplicativo para obter informações de implantação do Serviço de Aplicativo do Azure.

Requisitos do cliente gRPC do .NET

O pacote Grpc.Net.Client dá suporte a chamadas do gRPC por HTTP/2 no .NET Core 3 e no .NET 5 ou posterior.

O suporte limitado está disponível para gRPC por HTTP/2 no .NET Framework. Outras versões do .NET, como UWP, Xamarin e Unity, não têm suporte necessário para HTTP/2 e devem usar o gRPC-Web.

A tabela a seguir lista as implementações do .NET e o suporte ao cliente do gRPC:

Implementação do .NET gRPC sobre HTTP/2 gRPC-Web
.NET 5 ou posterior ✔️ ✔️
.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 ✔️
Plataforma Universal do Windows 10.0.16299 ✔️
Unity 2018.1 ✔️

† A .NET Framework requer a configuração de WinHttpHandler e Windows 11 ou posterior, Windows Server 2019 ou posterior. Para obter mais informações, confira Fazer chamadas gRPC no .NET Framework.

O uso do Grpc.Net.Client com o gRPC-Web requer configurações adicionais. Para saber mais:

Importante

O gRPC-Web requer que o cliente e o servidor sejam compatíveis com ele. O gRPC-Web pode ser configurado rapidamente por um servidor gRPC do ASP.NET Core. Outras implementações de servidor gRPC exigem um proxy para dar suporte a gRPC-Web.

Recursos adicionais