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 la configuración de gRPC-Web, consulte Uso de gRPC en aplicaciones de explorador.

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†

macOS no admite el hospedaje de aplicaciones ASP.NET Core con HTTPS.

Servidores de ASP.NET Core admitidos

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

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

†IIS requiere .NET 5 y Windows 10, compilación 20300.1000 o posterior.
‡HTTP.sys requiere .NET 5 y Windows 10, compilación 19529 o posterior.

Las versiones de la compilación de Windows 10 anteriores pueden requerir el uso de una compilación para Windows Insider.

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

Servicios de Azure

†Azure App Service no admite el hospedaje de gRPC a través de HTTP/2. gRPC-Web es una alternativa compatible.

Se está trabajando para mejorar la compatibilidad con gRPC con HTTP/2 en Azure App Service. Para más información, consulte este problema de GitHub.

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 la compilación 19622, o versiones posteriores, de Windows 10, lo que puede requerir el uso de una compilación para Windows Insider.

El uso de Grpc.Net.Client en .NET Framework o con gRPC-Web requiere opciones de configuración adicionales. Para obtener más información, vea Uso del cliente gRPC con .NET Standard 2.0.

Recursos adicionales