Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core grpc服务是否始终通过MapGrpcService注册?_Asp.net Core_Grpc - Fatal编程技术网

Asp.net core grpc服务是否始终通过MapGrpcService注册?

Asp.net core grpc服务是否始终通过MapGrpcService注册?,asp.net-core,grpc,Asp.net Core,Grpc,我想知道是否有可能让我在Asp.NETCore初创公司注册grpc服务,比如 private void RegisterServices(IEndpointRouteBuilder endpointRouteBuilder) { endpointRouteBuilder.MapGrpcService<Service.SessionService>(); } private void RegisterServices(IEndpointRouteBuilder endpoin

我想知道是否有可能让我在Asp.NETCore初创公司注册grpc服务,比如

private void RegisterServices(IEndpointRouteBuilder endpointRouteBuilder)
{
    endpointRouteBuilder.MapGrpcService<Service.SessionService>();
}
private void RegisterServices(IEndpointRouteBuilder endpointRouteBuilder)
{
endpointRouteBuilder.MapGrpcService();
}
不为每个请求重新生成

到目前为止,我注意到的行为是,对于每一次grpc呼叫,都会再次启动一项新服务。我本以为有可能让他们活着。默认行为使得在服务中很难处理状态。到目前为止,我只看到两种选择:

  • 让grpc服务将呼叫转发到grpc服务将通过DI框架接收的实际服务,DI框架实际上将服务与单例生存期绑定

  • 严格保持服务无状态,并通过DI交付有状态的部分


  • 没有其他方法可以使服务本身持久吗?

    您希望维护请求范围的服务本身。应将构造函数代码视为请求级状态设置。正如您所指出的,拥有更大的状态范围的正确方法是使用注入的单例(或其他不同范围的单例)