【发布时间】:2023-10-10 21:06:01
【问题描述】:
所以我正在尝试构建一个同时具有 REST 和 gRPC 的 .Net Core 应用程序。
预期结果:运行一个应用程序,该应用程序支持一个端口上的工作 REST 和另一个端口上的 gRPC。
REST 很简单。这是应用程序开始的地方。但是要配置 gRPC 的端口,我看到我需要创建一个服务器实例:
Server server = new Server
{
Services = { Greeter.BindService(new GreeterImpl()) }
Ports = { new ServerPort("0.0.0.0", 5001, ServerCredentials.Insecure) }
};
server.Start();
这一切都很好,直到我们真正使用它并且像任何其他“控制器”GreeterImpl 一样需要服务的依赖注入:
private readonly IExampleService _exampleService;
public GreeterImpl (IExampleService exampleService)
{
_exampleService = exampleService;
}
现在第一个代码 sn-p 将不起作用,因为“new GreeterImpl()”需要一个 IExampleService。 我在网上搜索了如何在不使用具体实现的情况下获取 ServerServiceDefinition (从 Greeter.BindService() 返回的东西),但一无所获。那么,这应该怎么做呢,还是我走上了完全错误的道路?
【问题讨论】:
-
假设您将 ASP.NET Core 用于 REST API,使用 gRPC implementation that builds upon ASP.NET Core 会更容易。这样,您最终会在 gRPC 和 REST 之间共享相同的应用程序功能和服务容器,而它们只是不同的端点。
标签: grpc grpc-dotnet