c# - 在 .Net Core 中将 HTTP/JSON 转码为 gRPC

标签 c# .net-core grpc

我最近发现可以对 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/

相关文章:

c# - 浏览器链接不刷新 Chrome 中的页面

c# - 从 resx 文件中读取字符串 sharpdevelop c#

c# - ASP.NET Core 3.0 Web API 路由不起作用

java - 当 grpcblockingstub 在截止日期内调用时如何管理应用程序崩溃

go - grpc:使用 oneof 会导致无效的内存地址或 nil 指针取消引用

java - Protobuf 对象作为 Maps 中的键

c# - 我怎样才能把这个写得更短?

c# - 如何检查所有多个表是否已更新?

wcf - 使用 WCF 服务的 .NET Core 应用程序中的内容问题

c# - 从 Azure 服务总线接收消息时出现 System.Runtime.Serialization.SerializationException