public static IServiceHostBuilder AddLogging(this IServiceHostBuilder builder, string configPath, Action <ILoggingBuilder> optionsAction = null) { builder.Dependencies.AddLogging(options => { options.AddConfiguration(builder.Configuration.Build().GetSection(configPath)); optionsAction?.Invoke(options); }); return(builder); }
public static IServiceHostBuilder UseServiceCache(this IServiceHostBuilder hostBuilder) { return(hostBuilder.MapServices(mapper => { var serviceCacheProvider = mapper.Resolve <ICacheNodeProvider>(); var addressDescriptors = serviceCacheProvider.GetServiceCaches().ToList(); mapper.Resolve <IServiceCacheManager>().SetCachesAsync(addressDescriptors); })); }
public static IServiceHostBuilder UseLog4net(this IServiceHostBuilder hostBuilder, Func <string, LogLevel, bool> filter, string log4NetConfigFile = "log4net.config") { return(hostBuilder.MapServices(mapper => { mapper.Resolve <ILoggerFactory>().AddConsole(filter); log4NetConfigFile = EnvironmentHelper.GetEnvironmentVariable(log4NetConfigFile); mapper.Resolve <ILoggerFactory>().AddProvider(new Log4NetProvider(log4NetConfigFile)); })); }
public static IServiceHostBuilder UseNLog(this IServiceHostBuilder hostBuilder, Func <string, LogLevel, bool> filter, string log4NetConfigFile = "log4net.config") { return(hostBuilder.MapServices(mapper => { mapper.Resolve <ILoggerFactory>().AddConsole(filter); NLog.LogManager.LoadConfiguration(log4NetConfigFile); mapper.Resolve <ILoggerFactory>().AddProvider(new NLogProvider()); })); }
public static IServiceHostBuilder WithJwtAuth([NotNull] this IServiceHostBuilder serviceHostBuilder) { if (serviceHostBuilder == null) { throw new ArgumentNullException(nameof(serviceHostBuilder)); } return(serviceHostBuilder.Configure(new JwtAuthHostConfigurator())); }
public static IServiceHostBuilder UseNLog(this IServiceHostBuilder hostBuilder, string log4NetConfigFile = "nLog.config") { return(hostBuilder.MapServices(mapper => { mapper.Resolve <ILoggerFactory>().AddConsole((c, l) => (int)l >= 3); NLog.LogManager.LoadConfiguration(log4NetConfigFile); mapper.Resolve <ILoggerFactory>().AddProvider(new NLogProvider()); })); }
public static IServiceHostBuilder UseProxy(this IServiceHostBuilder hostBuilder) { return(hostBuilder.MapServices(mapper => { mapper.Resolve <IServiceEngineLifetime>().ServiceEngineStarted.Register(() => { mapper.Resolve <IServiceProxyFactory>(); }); })); }
public static IServiceHostBuilder UseNLog(this IServiceHostBuilder hostBuilder, Func <string, LogLevel, bool> filter, string nlogConfigFile = "nLog.config") { return(hostBuilder.MapServices(mapper => { mapper.Resolve <ILoggerFactory>().AddConsole(filter); nlogConfigFile = EnvironmentHelper.GetEnvironmentVariable(nlogConfigFile); NLog.LogManager.LoadConfiguration(nlogConfigFile); mapper.Resolve <ILoggerFactory>().AddProvider(new NLogProvider()); })); }
public static IServiceHostBuilder SubscribeAt(this IServiceHostBuilder hostBuilder) { return(hostBuilder.MapServices(mapper => { mapper.Resolve <IServiceEngineLifetime>().ServiceEngineStarted.Register(() => { mapper.Resolve <ISubscriptionAdapt>().SubscribeAt(); }); })); }
public static IServiceHostBuilder WithAssemblyDependencies([NotNull] this IServiceHostBuilder serviceHostBuilder, Assembly assembly) { if (serviceHostBuilder == null) { throw new ArgumentNullException(nameof(serviceHostBuilder)); } return(serviceHostBuilder.Configure(new IocHostConfigurator(assembly))); }
public static IServiceHostBuilder UseServer(this IServiceHostBuilder hostBuilder, string ip, int port, string token = "True") { return(hostBuilder.MapServices(mapper => { BuildServiceEngine(mapper); mapper.Resolve <IServiceCommandManager>().SetServiceCommandsAsync(); var serviceEntryManager = mapper.Resolve <IServiceEntryManager>(); string serviceToken = mapper.Resolve <IServiceTokenGenerator>().GeneratorToken(token); int _port = AppConfig.ServerOptions.Port == 0? port: AppConfig.ServerOptions.Port; string _ip = AppConfig.ServerOptions.Ip ?? ip; _port = AppConfig.ServerOptions.IpEndpoint?.Port ?? _port; _ip = AppConfig.ServerOptions.IpEndpoint?.Address.ToString() ?? _ip; if (_ip.IndexOf(".") < 0 || _ip == "" || _ip == "0.0.0.0") { NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInterface adapter in nics) { if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet && (_ip == "" || _ip == "0.0.0.0" || _ip == adapter.Name)) { IPInterfaceProperties ipxx = adapter.GetIPProperties(); UnicastIPAddressInformationCollection ipCollection = ipxx.UnicastAddresses; foreach (UnicastIPAddressInformation ipadd in ipCollection) { if (ipadd.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { _ip = ipadd.Address.ToString(); } } } } } new ServiceRouteWatch(mapper.Resolve <CPlatformContainer>(), () => { var addressDescriptors = serviceEntryManager.GetEntries().Select(i => new ServiceRoute { Address = new[] { new IpAddressModel { Ip = _ip, Port = _port, ProcessorTime = Process.GetCurrentProcess().TotalProcessorTime.TotalSeconds, Token = serviceToken } }, ServiceDescriptor = i.Descriptor }).ToList(); mapper.Resolve <IServiceRouteManager>().SetRoutesAsync(addressDescriptors); }); mapper.Resolve <IModuleProvider>().Initialize(); var serviceHost = mapper.Resolve <Runtime.Server.IServiceHost>(); Task.Factory.StartNew(async() => { await serviceHost.StartAsync(new IPEndPoint(IPAddress.Parse(_ip), _port)); }).Wait(); })); }
public static IServiceHostBuilder WithSessionId([NotNull] this IServiceHostBuilder serviceHostBuilder) { if (serviceHostBuilder == null) { throw new ArgumentNullException(nameof(serviceHostBuilder)); } return(serviceHostBuilder .Configure(new SessionIdHostConfigurator()) .WithRequestMiddleware <SessionIdRequestMiddleware>()); }
public static IServiceHostBuilder WithApiVersionning(this IServiceHostBuilder serviceHostBuilder) { if (serviceHostBuilder == null) { throw new ArgumentNullException(nameof(serviceHostBuilder)); } serviceHostBuilder.Configure(new VersioningHostConfigurator()); return(serviceHostBuilder); }
public static IServiceHostBuilder WithConfigFile( [NotNull] this IServiceHostBuilder serviceHostBuilder, [NotNull] string fileName) { if (serviceHostBuilder == null) { throw new ArgumentNullException(nameof(serviceHostBuilder)); } return(serviceHostBuilder.Configure(new ConfigFileHostConfigurator(fileName))); }
public static IServiceHostBuilder WithRequestMiddleware <TRequestExecutor>( [NotNull] this IServiceHostBuilder serviceHostBuilder) where TRequestExecutor : class, IRequestMiddleware { if (serviceHostBuilder == null) { throw new ArgumentNullException(nameof(serviceHostBuilder)); } return(serviceHostBuilder.Configure(new RequestMiddlewareConfigurator <TRequestExecutor>())); }
public static IServiceHostBuilder UseLog4net(this IServiceHostBuilder hostBuilder, LogLevel minLevel, string log4NetConfigFile = "log4net.config") { hostBuilder.ConfigureLogging(logger => { logger.SetMinimumLevel(minLevel); }); return(hostBuilder.MapServices(mapper => { log4NetConfigFile = EnvironmentHelper.GetEnvironmentVariable(log4NetConfigFile); mapper.Resolve <ILoggerFactory>().AddProvider(new Log4NetProvider(log4NetConfigFile)); })); }
internal static IServiceHostBuilder UseLog4netLogger(this IServiceHostBuilder serviceHostBuilder, Log4netOptions options = null) { serviceHostBuilder.RegisterService(containerBuilder => { if (options == null) { options = new Log4netOptions(); } containerBuilder.RegisterType <Log4netLogger>().WithParameter("options", options).As <ILogger>().SingleInstance(); }); return(serviceHostBuilder); }
public static IServiceHostBuilder WithSwagger(this IServiceHostBuilder hostBuilder, string title, string description) { if (hostBuilder == null) { throw new ArgumentNullException(nameof(hostBuilder)); } hostBuilder.Configure(new SwaggerHostConfigurator(title, description)); return(hostBuilder); }
public static IServiceHostBuilder UseLog4net(this IServiceHostBuilder hostBuilder, string log4NetConfigFile = "log4net.config") { hostBuilder.ConfigureLogging(logger => { logger.AddConfiguration(CPlatform.AppConfig.GetSection("Logging")); }); return(hostBuilder.MapServices(mapper => { var section = CPlatform.AppConfig.GetSection("Logging"); log4NetConfigFile = EnvironmentHelper.GetEnvironmentVariable(log4NetConfigFile); mapper.Resolve <ILoggerFactory>().AddProvider(new Log4NetProvider(log4NetConfigFile)); })); }
public static IServiceHostBuilder UseSchedule(this IServiceHostBuilder hostBuilder) { return(hostBuilder.MapServices(mapper => { var jobEntities = mapper.Resolve <IJobEntityProvider>().GetJobEntities(); var surgingScheduleJobManager = mapper.Resolve <ISurgingScheduleJobManager>(); foreach (var jobEntity in jobEntities) { surgingScheduleJobManager.ScheduleAsync(jobEntity).Wait(); } surgingScheduleJobManager.Start().Wait(); })); }
public static IServiceHostBuilder UseNLog(this IServiceHostBuilder hostBuilder, LogLevel minLevel, string nlogConfigFile = "nLog.config") { hostBuilder.ConfigureLogging(logger => { logger.SetMinimumLevel(minLevel); }); return(hostBuilder.MapServices(mapper => { nlogConfigFile = EnvironmentHelper.GetEnvironmentVariable(nlogConfigFile); NLog.LogManager.LoadConfiguration(nlogConfigFile); mapper.Resolve <ILoggerFactory>().AddProvider(new NLogProvider()); })); }
public static IServiceHostBuilder UseNLog(this IServiceHostBuilder hostBuilder, string nlogConfigFile = "nLog.config") { hostBuilder.ConfigureLogging(logger => { logger.AddConfiguration(CPlatform.AppConfig.GetSection("Logging")); }); return(hostBuilder.MapServices(mapper => { var section = CPlatform.AppConfig.GetSection("Logging"); nlogConfigFile = EnvironmentHelper.GetEnvironmentVariable(nlogConfigFile); NLog.LogManager.LoadConfiguration(nlogConfigFile); mapper.Resolve <ILoggerFactory>().AddProvider(new NLogProvider()); })); }
public static IServiceHostBuilder UseServer(this IServiceHostBuilder hostBuilder, string ip, int port, string token = "True") { return(hostBuilder.MapServices(mapper => { BuildServiceEngine(mapper); mapper.Resolve <IServiceCommandManager>().SetServiceCommandsAsync(); string serviceToken = mapper.Resolve <IServiceTokenGenerator>().GeneratorToken(token); int _port = AppConfig.ServerOptions.Port == 0 ? port : AppConfig.ServerOptions.Port; string _ip = AppConfig.ServerOptions.Ip ?? ip; _port = AppConfig.ServerOptions.IpEndpoint?.Port ?? _port; _ip = AppConfig.ServerOptions.IpEndpoint?.Address.ToString() ?? _ip; if (_ip.IndexOf(".") < 0 || _ip == "" || _ip == "0.0.0.0") { NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInterface adapter in nics) { if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet && (_ip == "" || _ip == "0.0.0.0" || _ip == adapter.Name)) { IPInterfaceProperties ipxx = adapter.GetIPProperties(); UnicastIPAddressInformationCollection ipCollection = ipxx.UnicastAddresses; foreach (UnicastIPAddressInformation ipadd in ipCollection) { if (ipadd.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { _ip = ipadd.Address.ToString(); } } } } } var mappingIp = AppConfig.ServerOptions.MappingIP ?? _ip; var mappingPort = AppConfig.ServerOptions.MappingPort; if (mappingPort == 0) { mappingPort = _port; } ConfigureRoute(mapper, mappingIp, mappingPort, serviceToken); mapper.Resolve <IModuleProvider>().Initialize(); var serviceHosts = mapper.Resolve <IList <Runtime.Server.IServiceHost> >(); Task.Factory.StartNew(async() => { foreach (var serviceHost in serviceHosts) { await serviceHost.StartAsync(_ip, _port); } mapper.Resolve <IServiceEngineLifetime>().NotifyStarted(); }).Wait(); })); }
public static IServiceHostBuilder UseStartup(this IServiceHostBuilder hostBuilder, Type startupType) { return(hostBuilder .ConfigureServices(services => { if (typeof(IStartup).GetTypeInfo().IsAssignableFrom(startupType.GetTypeInfo())) { services.AddSingleton(typeof(IStartup), startupType); } else { services.AddSingleton(typeof(IStartup), sp => { return new ConventionBasedStartup(StartupLoader.LoadMethods(sp, startupType, "")); }); } })); }
public static T UseLog4netLogger <T>(this IServiceHostBuilder serviceHostBuilder, LogOptions options = null) where T : class, IServiceHostBuilder { serviceHostBuilder.RegisterService(containerBuilder => { if (options == null) { options = new LogOptions(); } containerBuilder.RegisterType <Log4netLogger>().WithParameter("options", options).As <ILogger>().SingleInstance(); }); serviceHostBuilder.AddInitializer(container => { var logger = container.Resolve <ILogger>(); logger.Info($"[config]use Log4net logger"); }); return(serviceHostBuilder as T); }
public static IServiceHostBuilder UseServer(this IServiceHostBuilder hostBuilder) { return(hostBuilder.MapServices(async mapper => { int _port = 981; string _ip = "127.0.0.1"; Console.WriteLine($"准备启动服务主机,监听地址:{_ip}:{_port}。"); var transportHosts = mapper.Resolve <IList <ITransportHost> >(); Task.Factory.StartNew(async() => { foreach (var transportHost in transportHosts) { await transportHost.StartAsync(_ip, _port); } }).Wait(); })); }
public static IServiceHostBuilder SubscribeAt(this IServiceHostBuilder hostBuilder) { return(hostBuilder.MapServices(mapper => { mapper.Resolve <IServiceEngineLifetime>().ServiceEngineStarted.Register(() => { mapper.Resolve <ISubscriptionAdapt>().SubscribeAt(); new ServiceRouteWatch(mapper.Resolve <CPlatformContainer>(), () => { var subscriptionAdapt = mapper.Resolve <ISubscriptionAdapt>(); mapper.Resolve <IEventBus>().OnShutdown += (sender, args) => { subscriptionAdapt.Unsubscribe(); }; mapper.Resolve <ISubscriptionAdapt>().SubscribeAt(); }); }); })); }
public static IServiceHostBuilder UseClient(this IServiceHostBuilder hostBuilder) { return(hostBuilder.MapServices(mapper => { var serviceEntryManager = mapper.Resolve <IServiceEntryManager>(); var addressDescriptors = serviceEntryManager.GetEntries().Select(i => { i.Descriptor.Metadatas = null; return new ServiceSubscriber { Address = new[] { new IpAddressModel { Ip = Dns.GetHostEntry(Dns.GetHostName()) .AddressList.FirstOrDefault <IPAddress> (a => a.AddressFamily.ToString().Equals("InterNetwork")).ToString() } }, ServiceDescriptor = i.Descriptor }; }).ToList(); mapper.Resolve <IServiceSubscribeManager>().SetSubscribersAsync(addressDescriptors); })); }
public static IServiceHostBuilder UseClient(this IServiceHostBuilder hostBuilder) { return(hostBuilder.MapServices(mapper => { var serviceEntryManager = mapper.Resolve <IServiceEntryManager>(); var addressDescriptors = serviceEntryManager.GetEntries().Select(i => { i.Descriptor.Metadatas = null; if (!string.IsNullOrEmpty(AppConfig.ServerOptions.MappingIP)) { return new ServiceSubscriber { Address = new[] { new MappingAddressModel { InnerIp = Dns.GetHostEntry(Dns.GetHostName()) .AddressList.FirstOrDefault <IPAddress>(a => a.AddressFamily.ToString().Equals("InterNetwork")).ToString(), //MappingIp = AppConfig.ServerOptions.MappingIP, } }, ServiceDescriptor = i.Descriptor }; } else { return new ServiceSubscriber { Address = new[] { new IpAddressModel { Ip = Dns.GetHostEntry(Dns.GetHostName()) .AddressList.FirstOrDefault <IPAddress>(a => a.AddressFamily.ToString().Equals("InterNetwork")).ToString() } }, ServiceDescriptor = i.Descriptor }; } }).ToList(); mapper.Resolve <IServiceSubscribeManager>().SetSubscribersAsync(addressDescriptors); mapper.Resolve <IModuleProvider>().Initialize(); })); }
public static IServiceHostBuilder UseServer(this IServiceHostBuilder hostBuilder, string ip, int port, string token = "True") { return(hostBuilder.MapServices(mapper => { mapper.Resolve <IServiceCommandManager>().SetServiceCommandsAsync(); var serviceEntryManager = mapper.Resolve <IServiceEntryManager>(); bool enableToken; string serviceToken; if (!bool.TryParse(token, out enableToken)) { serviceToken = token; } else { if (enableToken) { serviceToken = Guid.NewGuid().ToString("N"); } else { serviceToken = null; } } var addressDescriptors = serviceEntryManager.GetEntries().Select(i => new ServiceRoute { Address = new[] { new IpAddressModel { Ip = ip, Port = port, Token = serviceToken } }, ServiceDescriptor = i.Descriptor }).ToList(); mapper.Resolve <IServiceRouteManager>().SetRoutesAsync(addressDescriptors); var serviceHost = mapper.Resolve <Runtime.Server.IServiceHost>(); Task.Factory.StartNew(async() => { await serviceHost.StartAsync(new IPEndPoint(IPAddress.Parse(ip), port)); }).Wait(); })); }