我最近发现可以对 gRPC 服务器进行“转码”,以便它可以接收 HTTP/JSON 请求以及 gRPC 请求。我相信这将允许用户使用普通的 NetCore HTTP 客户端向 gRPC 服务器发送请求(当然使用 protobuf)。我已经在其他语言(主要是 Go)中看到了这种实现,但我还没有看到任何关于如何在 .NetCore 和 C# 中完成此操作的信息。您知道如何实现这一目标吗?
这是有关该主题的 Goggle 官方文档:https://cloud.google.com/endpoints/docs/grpc/transcoding
非常感谢
最佳答案
我认为最好的方法是使用 google api
HTTP 选项并配置 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 预览版,但看起来是一个更容易上手的选项。
关于c# - 在 .Net Core 中将 HTTP/JSON 转码为 gRPC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59747504/