public static IWebHost RunGrpcServer(this IWebHost webhost)
        {
            var scope             = webhost.Services.CreateScope();
            var service           = scope.ServiceProvider.GetRequiredService <NetCoreBenchService.NetCoreBenchServiceBase>();
            var serviceOptions    = scope.ServiceProvider.GetRequiredService <IOptions <ServiceOptions> >().Value;
            var serviceDefinition = NetCoreBenchService.BindService(service);

            using (var server = new GrpcServer(serviceOptions.Host, serviceOptions.Port, serviceDefinition))
            {
                server.Start();
            }

            return(webhost);
        }
 public static IWebHostBuilder UseGrpc <T>(this IWebHostBuilder hostBuilder)
     where T : NetCoreBenchService.NetCoreBenchServiceBase
 {
     return(hostBuilder.ConfigureServices(services =>
     {
         services.AddSingleton <IServer, GrpcServer>(provider =>
         {
             var serverOptions = provider.GetService <IOptions <ServiceOptions> >().Value;
             var contract = provider.GetService <T>();
             var serviceDefinition = NetCoreBenchService.BindService(contract);
             return new GrpcServer(serverOptions.Host, serverOptions.Port, serviceDefinition);
         });
     }));
 }