所以我正在尝试构建一个同时具有 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;
}
现在第一个代码片段将不起作用,因为“new GreeterImpl()”需要一个 IExampleService。我在网上搜索了如何在不使用具体实现的情况下获取 ServerServiceDefinition (从 Greeter.BindService() 返回的东西),但一无所获。那么,这应该怎么做呢,还是我走上了完全错误的道路?