在 .NetCore 中将 HTTP/JSON 转码为 gRPC

Mon*_*rov 5 c# .net-core grpc

我最近发现可以对 gRPC 服务器进行“转码”,以便它可以接收 HTTP/JSON 请求以及 gRPC 请求。我相信这将允许用户使用普通的 NetCore HTTP 客户端向 gRPC 服务器发送请求(当然使用 protobuf)。我已经在其他语言(主要是 Go)中看到了这种实现,但我还没有看到任何关于如何在 .NetCore 和 C# 中完成此操作的信息。您知道如何实现这一目标吗?

这是有关该主题的官方 Goggle 文档:https ://cloud.google.com/endpoints/docs/grpc/transcoding

非常感谢

Pet*_*art 3

我认为最好的方法是使用google apiHTTP 选项并配置 Envoy 代理来进行转码。

我之前根据 Christophe Hesters博客上的信息完成了这项工作。

然而,部署有点繁琐(尤其是在 Windows 上,这是我开发的平台)。

我用于调试的第一种方法是:

  • 运行 WSL Ubuntu / WSL 2 Ubuntu / Ubuntu VM
  • 在Linux中安装docker
  • 跑步envoyproxy/envoy
  • 在主机上手动运行 gRPC 服务

您可以使用 docker(如果在 Windows 上则为桌面)/docker-compose 来进行更便携的设置,其中 Envoy 和您的服务都作为容器运行。

在你的问题的提示下,我刚刚发现了Microsoft.AspNetCore.Grpc.HttpApi。目前它只是一个 WIP 预览版,但看起来是一个更容易上手的选择。