YARP Docsv2.3
Documentación/Protocolos/Proxy de gRPC

Proxy de gRPC

gRPC es un marco de trabajo de llamada a procedimiento remoto (RPC) independiente del lenguaje y de alto rendimiento. Está

Introducción

gRPC es un marco de trabajo de llamada a procedimiento remoto (RPC) independiente del lenguaje y de alto rendimiento. Está construido sobre HTTP/2 y se puede reenviar a través de YARP. Aunque YARP no necesita conocer los mensajes de gRPC, sí debe asegurarse de que esté habilitado el protocolo HTTP correcto. gRPC requiere HTTP/2, y las llamadas de gRPC producirán un error si YARP no está configurado correctamente para enviar y recibir solicitudes HTTP/2.

Configurar los protocolos entrantes de YARP

gRPC requiere HTTP/2 en la mayoría de los escenarios. HTTP/1.1 y HTTP/2 están habilitados de forma predeterminada en los servidores de ASP.NET Core (el front-end de YARP), pero requieren https (TLS) para usar HTTP/2, por lo que YARP debe estar escuchando en una URL https://.

HTTP/2 sobre http (sin TLS) solo se admite en Kestrel y requiere una configuración específica. Para obtener más información, consulte gRPC services with ASP.NET Core.

A continuación se muestra cómo configurar Kestrel para usar HTTP/2 sobre http (sin TLS):

JSON   {
       "Kestrel": {
          "Endpoints": {
             "http": {
                 "Url": "http://localhost:5000",
                 "Protocols": "Http2"
             }
          }
       }
   }

Configurar los protocolos salientes de YARP

YARP negocia automáticamente HTTP/1.1 o HTTP/2 para las solicitudes de proxy salientes, pero solo cuando se usa https (TLS). HTTP/2 sobre http (sin TLS) requiere una configuración adicional. Tenga en cuenta que los protocolos salientes son independientes de los entrantes. Por ejemplo, se puede usar https para la conexión entrante y http para la saliente; esto se conoce como terminación de TLS. Para obtener los detalles de configuración, consulte YARP HTTP Client Configuration.

A continuación se muestra cómo configurar la solicitud de proxy saliente para usar HTTP/2:

JSON"cluster1": {
   "HttpRequest": {
      "Version": "2",
      "VersionPolicy": "RequestVersionExact"
   },
   "Destinations": {
      "cluster1/destination1": {
          "Address": "http://localhost:6000/"
      }
   }
},

gRPC-Web

gRPC-Web es un formato de transmisión alternativo para gRPC compatible con HTTP/1.1.

application/grpc: gRPC sobre HTTP/2 es la forma habitual de usar gRPC. application/grpc-web: gRPC-Web adapta el protocolo gRPC para que sea compatible con HTTP/1.1. gRPC-Web se puede usar en más lugares. gRPC-Web puede usarse desde aplicaciones de navegador y en redes sin compatibilidad completa con HTTP/2. No se admiten dos funciones avanzadas de gRPC: la transmisión desde el cliente (client streaming) y la transmisión bidireccional.

gRPC-Web se puede reenviar mediante la configuración predeterminada de YARP, sin necesidad de ninguna consideración especial.

Nota

El autor creó este artículo con la ayuda de la IA. Más información

Adaptado de Microsoft Learn , con licencia CC BY 4.0 .