public void Run(int port) { NatashaInitializer.InitializeAndPreheating(); _Logger?.LogInformation("初始化动态代码引擎"); this.Port = port; _requestReception = ServiceProvider.GetService <IRequestReception>(); _tcpListener = new TcpListener(IPAddress.Any, port); _tcpListener.Start(); _Logger?.LogInformation("Gateway started, port:{0}", port); if (ServerCert != null) { _Logger?.LogInformation("Use ssl,certificate hash:{0}", ServerCert.GetCertHashString()); } while (true) { try { var socket = _tcpListener.AcceptSocket(); Task.Run(() => _requestReception.Interview(socket)); } catch (Exception ex) { _Logger?.LogError(ex, ex.Message); break; } } }
public void Run() { ServiceProvider = _services.BuildServiceProvider(); _logger = ServiceProvider.GetService <ILogger <MicroServiceHost> >(); _GatewayConnector = ServiceProvider.GetService <IGatewayConnector>(); _GatewayConnector.ConnectAsync(); _RequestReception = ServiceProvider.GetService <IRequestReception>(); _scheduleTaskManager.StartTasks(); var sslConfig = ServiceProvider.GetService <SSLConfiguration>(); TcpListener listener = new TcpListener(ServicePort); listener.Start(); _logger?.LogInformation("Service host started , port:{0}", ServicePort); _logger?.LogInformation("Gateways:" + AllGatewayAddresses.ToJsonString()); if (sslConfig != null) { if (sslConfig.GatewayClientCertificate != null) { _logger?.LogInformation("Gateway client use ssl,certificate hash:{0}", sslConfig.GatewayClientCertificate.GetCertHashString()); } if (sslConfig.ServerCertificate != null) { _logger?.LogInformation("Service host use ssl,certificate hash:{0}", sslConfig.ServerCertificate.GetCertHashString()); } } if (ServiceProviderBuilded != null) { Task.Run(() => { try { ServiceProviderBuilded(this, this.ServiceProvider); } catch (Exception ex) { _logger?.LogError(ex, ex.Message); } }); } using (var processExitHandler = (IProcessExitListener)ServiceProvider.GetService <IProcessExitHandler>()) { processExitHandler.Listen(this); while (true) { var socket = listener.AcceptSocket(); if (processExitHandler.ProcessExited) { break; } Task.Run(() => _RequestReception.Interview(socket)); } } }