public static IGrpcServiceBuilder AddGrpc(this IServiceCollection services, Action <GrpcServerConfig> configServer) { if (services == null) { throw new ArgumentNullException(nameof(services)); } var opts = new GrpcServerConfig(); configServer?.Invoke(opts); services.AddSingleton(opts); services.AddSingleton <GrpcServer>(); services.AddHostedService <GrpcServerHostedService>(); var serviceBuilder = new GrpcServiceBuilder(services); return(serviceBuilder); }
/// <summary> /// /// </summary> /// <param name="args"></param> static void Main(string[] args) { Server server = new Server(); try { SampleServerSettings settings = SampleServerSettings.LoadFromFile("SampleServerSettings.config"); //ServiceTimeFillterAttribute.DefaultOpenTime = null; //ServiceTimeFillterAttribute.DefaultCloseTime = null; // regist service. GrpcServiceBuilder builder = new GrpcServiceBuilder(); GrpcServiceBuilderSettings builderSettings = new GrpcServiceBuilderSettings(); builderSettings.MarshallerFactory = GrpcMarshallerFactory.DefaultInstance; builderSettings.PerformanceListener = new GrpcServerPerformanceListener(); RegistPerformanceEventHandlers(builderSettings.PerformanceListener); server.Services.Add(builder.BuildService("PlayerSearch", typeof(PlayerSearch), new PlayerSearchServiceImpl(), builderSettings)); // regist heartbeat. server.Services.Add(GrpcHeartbeat.BuildService()); // start server. Grpc.Core.ServerCredentials credential = Grpc.Core.ServerCredentials.Insecure; server.Ports.Add(settings.ServerName, settings.ServerPort, credential); Console.WriteLine(string.Format("Starting... {0}:{1}", settings.ServerName, settings.ServerPort)); server.Start(); Console.WriteLine("Started."); Console.WriteLine("If you want to shutdown, please press any key."); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } finally { Console.WriteLine("In shutdown..."); try { if (server != null) { server.ShutdownAsync().Wait(); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } Console.WriteLine("Shutdown completed."); } Console.WriteLine("If you want to close, please press any key."); Console.ReadLine(); }