将HTTP / JSON转换为.NetCore中的gRPC - c#

我最近发现,可以对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预览,但看起来更容易上手。

将http 204“无内容”返回给ASP.NET MVC2中的客户端 - c#

在我拥有的ASP.net MVC 2应用程序中,我想对后操作返回204 No Content响应。当前,我的控制器方法的返回类型为void,但这会以200 OK的方式将响应发送回客户端,并且Content-Length标头设置为0。如何使响应成为204?[HttpPost] public void DoSomething(string param) { //…

ASP.NET Core Singleton实例与瞬态实例的性能 - c#

在ASP.NET Core依赖注入中,我只是想知道注册Singleton实例是否会比注册Transient实例更好地提高性能?在我看来,对于Singleton实例,创建新对象和相关对象只需花费一次时间。对于Transient实例,此成本将针对每个服务请求重复。因此Singleton似乎更好。但是,在Singleton上使用Transient时,我们可以获得多…

如何在ASP.NET Core Web应用程序中增加JSON反序列化MaxDepth限制 - c#

我们正在将ASP.NET Core 2.1与.NET Framework 4.6.2结合使用。我们有一个客户需要向我们的Web应用程序发送一个很大程度上嵌套的json结构。当他们进行此调用时,我们将输出以下日志并返回错误: 读取器的MaxDepth超过了32。路径“ super.long.path.to property”,第1行,位置42111。”我浏览了…

ASP.NET Core-在Singleton注入上存储库依赖项注入失败 - c#

我正在使用SoapCore为我的ASP.NET Core MVC应用程序创建Web服务。我正在使用Entity Framework Core和简单的存储库模式来获取我的数据库数据。我通过Startup.cs中的.AddSingleton()注入存储库类:services.AddSingleton<IImportRepository, ImportRep…

使EF Core 2与仅具有吸气剂的属性一起使用,而没有支持字段 - c#

我的目标是使用以下代码使Entity Framework 2更好地发挥作用:public class Foo { public Guid Id { get; } // This should NOT change public string NotRequiredProperty {get; set;} public Foo(Guid id) => I…