ASP.NET Core 的 gRPC service 預設是沒有 Singleton 的,所以如果今天 gRPC client 發送多次訊息給 gRPC server。

1.png

gRPC server 會建多次 gRPC service 實體。

2.png

為避免這樣的情況,可在 Startup 的 ConfigureServices 內透過 services.AddSingleton 將 Service 的實體帶入。

...
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
...
services.AddGrpc();
services.AddSingleton(service);
...
}
...
}

gRPC server 就只會用指定的 gRPC service 實體去做事。

3.png