Usar o gRPC em aplicativos de navegador

Por James Newton-King

Não é possível chamar um serviço gRPC diretamente de um navegador. O gRPC usa recursos HTTP/2 e nenhum navegador fornece o nível de controle necessário em solicitações da Web para dar suporte a um cliente gRPC.

O gRPC no ASP.NET Core oferece duas soluções compatíveis com o navegador, a transcodificação de gRPC-Web e gRPC JSON.

gRPC-Web

O GRPC-Web permite que aplicativos de navegador chamem serviços gRPC com o cliente gRPC-Web e o Protobuf.

  • Semelhante ao gRPC normal, mas com um protocolo de transmissão ligeiramente diferente, o que o torna compatível com HTTP/1.1 e navegadores.
  • Requer que o aplicativo do navegador gere um cliente gRPC de um arquivo .proto.
  • Permite que os aplicativos do navegador se beneficiem do alto desempenho e do baixo uso de rede de mensagens binárias.

O .NET tem suporte interno para gRPC-Web. Para obter mais informações, consulte gRPC-Web em aplicativos gRPC do ASP.NET Core.

Transcodificação de gRPC JSON

A transcodificação de gRPC JSON permite que os aplicativos do navegador chamem serviços gRPC como se fossem RESTAPIs completas com JSON.

  • O aplicativo do navegador não precisa gerar um cliente gRPC nem saber nada sobre gRPC.
  • RESTAPIs ful são criadas automaticamente a partir de serviços gRPC anotando o arquivo .proto com metadados HTTP.
  • Permite que um aplicativo dê suporte a APIs Web gRPC e JSON sem duplicar o esforço de criação de serviços separados para ambos.

O .NET tem suporte interno para criar APIs Web JSON de serviços gRPC. Para obter mais informações, consulte Transcodificação de gRPC JSON em aplicativos gRPC do ASP.NET Core.

Observação

A transcodificação de gRPC JSON requer .NET 7 ou posterior.

Recursos adicionais