gRPC en plataformas compatibles con .NET

Por James Newton-King

En este artículo se describen los requisitos y las plataformas admitidas para usar gRPC con .NET. Las dos cargas de trabajo principales de gRPC presentan varios requisitos:

Formatos de conexión

gRPC aprovecha las características avanzadas que ofrece HTTP/2. HTTP/2 no se admite en todas partes, pero hay disponible un segundo formato de conexión con HTTP/1.1 para gRPC:

  • application/grpc -gRPC sobre HTTP/2 es la forma en que se suele usar gRPC.
  • application/grpc-web -gRPC-Web modifica el protocolo gRPC para que sea compatible con HTTP/1.1. gRPC-Web se puede usar en más ubicaciones. gRPC-Web se puede usar en aplicaciones del explorador y redes que no sean totalmente compatibles con HTTP/2. Ya no se admiten dos características avanzadas de gRPC: streaming de cliente y streaming bidireccional.

gRPC en .NET admite ambos formatos de conexión. De forma predeterminada se usa application/grpc. gRPC-Web debe estar configurado en el cliente y en el servidor para que las llamadas de gRPC-Web se efectúen correctamente. Para obtener información sobre cómo configurar gRPC-Web, vea gRPC-Web en aplicaciones gRPC de ASP.NET Core.

Requisitos de servidor de gRPC para ASP.NET Core

El hospedaje de servicios gRPC con ASP.NET Core requiere .NET Core 3.x o versiones posteriores.

  • .NET 5 o posterior
  • .NET Core 3

Los servicios gRPC para ASP.NET Core se pueden hospedar en todos los sistemas operativos con los que .NET Core es compatible.

  • Windows
  • Linux
  • macOS

Servidores de ASP.NET Core admitidos

Se admiten todos los servidores integrados de ASP.NET Core.

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

†Requiere .NET 5 y Windows 11, compilación 22000, o Windows Server 2022, compilación 20348 o posterior.

Para obtener información sobre la configuración de servidores de ASP.NET Core para ejecutar gRPC, vea Servicios gRPC con ASP.NET Core.

Servicios de Azure

†gRPC requiere un entorno basado en Linux en Azure App Service. Consulte Implementación de una aplicación gRPC de .NET 6 en App Service para información sobre la implementación de Azure App Service.

Requisitos del cliente gRPC para .NET

El paquete Grpc.Net.Client admite llamadas de gRPC por medio de HTTP/2 en .NET Core 3, y en .NET 5 o versiones posteriores.

En estos momentos, la compatibilidad con gRPC por medio de HTTP/2 en .NET Framework es limitada. Otras versiones de .NET, como UWP, Xamarin y Unity, no disponen de la compatibilidad necesaria con HTTP/2, por lo que en tales casos es necesario usar gRPC-Web.

En la siguiente tabla se enumeran las implementaciones de .NET y su compatibilidad con los clientes gRPC:

Implementación de .NET gRPC por medio de HTTP/2 gRPC-Web
.NET 5 o 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 de Windows 10.0.16299 ✔️
Unity 2018.1 ✔️

†.NET Framework requiere la configuración de WinHttpHandler y Windows 11 o posterior, Windows Server 2019 o posterior. Para obtener más información, consulte Realización de llamadas gRPC en .NET Framework.

El uso Grpc.Net.Client con gRPC-Web requiere una configuración adicional. Para obtener más información:

Importante

gRPC-Web requiere que el cliente y el servidor lo admitan. gRPC-Web se puede configurar rápidamente mediante un servidor gRPC de ASP.NET Core. Otras implementaciones del servidor gRPC requieren un proxy para admitir gRPC-Web.

Recursos adicionales