Ejemplo n.º 1
0
        public static YamsServiceConfiguration Load(string baseDirectory = null)
        {
            baseDirectory = string.IsNullOrEmpty(baseDirectory) ? ApplicationPath.CurrentDirectory : baseDirectory;
            var builder = new ConfigurationBuilder();

            builder
            .SetBasePath(baseDirectory)
            .AddJsonFile("yams.config.json", false)
            .AddJsonFile("yams.secrets.json", true);
            var config     = new YamsServiceConfiguration();
            var configRoot = builder.Build();

            configRoot.Bind(config);
            return(config);
        }
Ejemplo n.º 2
0
        private static void Main(string[] args)
        {
            ServicePointManager.DefaultConnectionLimit = 10000;
            HostFactory.Run(host =>
            {
                var configurationDirectory = ApplicationPath.CurrentDirectory;
                host.AddCommandLineDefinition("config", x => configurationDirectory = x);
                host.ApplyCommandLine();
                var configuration = YamsServiceConfiguration.Load(configurationDirectory);
                var logger        = new LoggerConfiguration()
                                    .WriteTo.RollingFile(Path.Combine(ApplicationPath.CurrentDirectory, "logs", "yams-{Date}.log"))
                                    .MinimumLevel.Is(LogEventLevel.Debug)
                                    .CreateLogger();
                Trace.Listeners.Add(new SerilogTraceListener.SerilogTraceListener(logger));

                host.Service <IYamsService>(service =>
                {
                    service.ConstructUsing(name =>
                    {
                        var builder = new YamsConfigBuilder(
                            configuration.ClusterId,
                            configuration.InstanceUpdateDomain,
                            configuration.InstanceUpdateDomain,
                            configuration.ApplicationInstallDirectory);
                        var yamsConfig = builder
                                         .SetCheckForUpdatesPeriodInSeconds(configuration.UpdatePeriodInSeconds)
                                         .SetApplicationRestartCount(configuration.RestartCount)
                                         .Build();
                        return(YamsServiceFactory.Create(
                                   yamsConfig,
                                   configuration.AzureStorageConnectionString,
                                   configuration.AzureStorageConnectionString));
                    });
                    service.WhenStarted(x => x.Start().Wait());
                    service.WhenStopped(x => x.Stop().Wait());
                });

                host.RunAsLocalSystem();
                host.SetDescription("Yams Service Host");
                host.SetDisplayName("Yams Service");
                host.SetServiceName("Yams");
                host.StartAutomatically();
            });
        }