/// <summary> /// This is the entry point of the service host process. /// </summary> private static void Main() { try { IServiceFabricConfigurationService serviceFabricConfigurationService = new ServiceFabricConfigurationService(); // License Aspose.Cells SoftwareLicenceSection softwareLicenceSection = serviceFabricConfigurationService.GetConfigSectionAs <SoftwareLicenceSection>(nameof(SoftwareLicenceSection)); if (!string.IsNullOrEmpty(softwareLicenceSection.AsposeLicence)) { using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(softwareLicenceSection.AsposeLicence.Replace("<", "<").Replace(">", ">")))) { new Aspose.Cells.License().SetLicense(ms); } } // Setup Autofac ContainerBuilder builder = ESFA.DC.DataMatch.ReportService.Core.DIComposition.BuildNewContainer(); ConfigurationRootModel configurationRoot = DICompositionServiceFabric.BuildContainer(builder, serviceFabricConfigurationService); ESFA.DC.DataMatch.ReportService.Core.DIComposition.BuildContainer(builder, configurationRoot); ESFA.DC.DataMatch.ReportService.Core.DIComposition.BuildStorageContainerAzure(builder, configurationRoot.azureBlobStorageOptions); // Register the Autofac magic for Service Fabric support. builder.RegisterServiceFabricSupport(); // Register the stateless service. builder.RegisterStatelessService <ServiceFabric.Common.Stateless>("ESFA.DC.DataMatch.ReportService.StatelessType"); using (var container = builder.Build()) { ServiceEventSource.Current.ServiceTypeRegistered(Process.GetCurrentProcess().Id, typeof(ServiceFabric.Common.Stateless).Name); // Prevents this host process from terminating so services keep running. Thread.Sleep(Timeout.Infinite); } } catch (Exception e) { ServiceEventSource.Current.ServiceHostInitializationFailed(e + Environment.NewLine + (e.InnerException?.ToString() ?? "No inner exception")); throw; } }
public void TestRegistrations() { ContainerBuilder builder = DIComposition.BuildNewContainer(); ConfigurationRootModel configurationRoot = DICompositionServiceFabric.BuildContainer(builder, new TestConfigurationHelper()); DIComposition.BuildContainer(builder, configurationRoot); DIComposition.RegisterServicesByYear(Constants.YEAR_1920, builder); DIComposition.BuildStorageContainerAzure(builder, configurationRoot.azureBlobStorageOptions); var c = builder.Build(); using (var lifeTime = c.BeginLifetimeScope()) { var messageHandler = lifeTime.Resolve <IMessageHandler <JobContextMessage> >(); var entryPoint = lifeTime.Resolve <EntryPoint>(); entryPoint.Should().NotBeNull(); messageHandler.Should().NotBeNull(); } }
public static void BuildContainer(ContainerBuilder containerBuilder, ConfigurationRootModel configurationRoot) { containerBuilder.RegisterInstance(configurationRoot.reportServiceConfiguration).As <IReportServiceConfiguration>(); containerBuilder.RegisterType <XmlSerializationService>().As <IXmlSerializationService>(); containerBuilder.RegisterType <JsonSerializationService>().As <IJsonSerializationService>().As <ISerializationService>(); containerBuilder.RegisterInstance(configurationRoot.versionInfo).As <IVersionInfo>().SingleInstance(); Register1920DatabaseContext(containerBuilder, configurationRoot); Register2021DatabaseContext(containerBuilder, configurationRoot); containerBuilder.RegisterType <DASPaymentsContext>().As <IDASPaymentsContext>(); containerBuilder.Register(context => { var optionsBuilder = new DbContextOptionsBuilder <DASPaymentsContext>(); optionsBuilder.UseSqlServer( configurationRoot.reportServiceConfiguration.DASPaymentsConnectionString, sqlServerOptions => { sqlServerOptions.CommandTimeout(600); sqlServerOptions.EnableRetryOnFailure(3, TimeSpan.FromSeconds(3), new List <int>()); }); return(optionsBuilder.Options); }) .As <DbContextOptions <DASPaymentsContext> >() .SingleInstance(); containerBuilder.RegisterType <DateTimeProvider.DateTimeProvider>().As <IDateTimeProvider>().InstancePerLifetimeScope(); containerBuilder.RegisterType <ExternalDataMatchModelComparer>(); containerBuilder.RegisterType <Handler>().As <IHandler>().InstancePerLifetimeScope(); containerBuilder.RegisterType <EntryPoint>().InstancePerLifetimeScope(); RegisterServices(containerBuilder); RegisterBuilders(containerBuilder); RegisterReports(containerBuilder); }
public static void Main(string[] args) { var configurationBuilder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); IConfigurationRoot configuration = configurationBuilder.Build(); // License Aspose.Cells string asposeLicense = configuration["AsposeLicence"]; if (!string.IsNullOrEmpty(asposeLicense)) { using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(asposeLicense.Replace("<", "<").Replace(">", ">")))) { new License().SetLicense(ms); } } // Setup Autofac ContainerBuilder builder = DIComposition.BuildNewContainer(); ConfigurationRootModel configurationRoot = new ConfigurationRootModel { azureBlobStorageOptions = new AzureStorageOptions { AzureBlobConnectionString = configuration["AzureBlobConnectionString"], AzureBlobContainerName = configuration["AzureBlobContainerName"] }, reportServiceConfiguration = new ReportServiceConfiguration { DASPaymentsConnectionString = configuration["DASPaymentsConnectionString"], ILR1920DataStoreConnectionString = configuration["ILR1920DataStoreConnectionString"], ILR2021DataStoreConnectionString = configuration["ILR2021DataStoreConnectionString"], }, versionInfo = new VersionInfo { ServiceReleaseVersion = "1.0" } }; DIComposition.BuildContainer(builder, configurationRoot); DIComposition.BuildStorageFileSystem(builder, configurationRoot.azureBlobStorageOptions, new FileSystemService(@"C:\Temp\")); IReportServiceContext reportServiceContext = new ConsoleReportServiceContext { JobId = -1, Container = configurationRoot.azureBlobStorageOptions.AzureBlobContainerName, CollectionYear = "1920", CollectionName = "PE-DAS-AppsInternalDataMatchMonthEndReport1920", ReturnPeriod = 3, ILRPeriods = GetIlrPeriods(), IsIlrSubmission = false, SubmissionDateTimeUtc = DateTime.UtcNow, Tasks = new List <string> { ReportTaskNameConstants.InternalDataMatchReport }, Ukprn = 0 }; builder.Register(c => new ApplicationLoggerSettings { ApplicationLoggerOutputSettingsCollection = new List <IApplicationLoggerOutputSettings> { new ConsoleApplicationLoggerOutputSettings { MinimumLogLevel = LogLevel.Verbose } } as IList <IApplicationLoggerOutputSettings> }).As <IApplicationLoggerSettings>().SingleInstance(); builder.RegisterType <ExecutionContext>().As <IExecutionContext>().InstancePerLifetimeScope(); builder.RegisterType <SerilogLoggerFactory>().As <ISerilogLoggerFactory>().InstancePerLifetimeScope(); builder.RegisterType <SeriLogger>().As <ILogger>().InstancePerLifetimeScope(); using (var container = builder.Build()) { IHandler handler = container.Resolve <IHandler>(); bool res = handler.HandleAsync(reportServiceContext, CancellationToken.None).Result; System.Console.WriteLine($"Finished - {res}"); } }
public static void Register1920DatabaseContext(ContainerBuilder containerBuilder, ConfigurationRootModel configurationRoot) { containerBuilder.RegisterType <ILR1920_DataStoreEntitiesValid>().As <IIlr1920ValidContext>(); containerBuilder.Register(context => { var optionsBuilder = new DbContextOptionsBuilder <ILR1920_DataStoreEntitiesValid>(); optionsBuilder.UseSqlServer( configurationRoot.reportServiceConfiguration.ILR1920DataStoreConnectionString, options => options.EnableRetryOnFailure(3, TimeSpan.FromSeconds(3), new List <int>())); return(optionsBuilder.Options); }) .As <DbContextOptions <ILR1920_DataStoreEntitiesValid> >() .SingleInstance(); containerBuilder.RegisterType <ILR1920_DataStoreEntities>().As <IIlr1920RulebaseContext>(); containerBuilder.Register(context => { var optionsBuilder = new DbContextOptionsBuilder <ILR1920_DataStoreEntities>(); optionsBuilder.UseSqlServer( configurationRoot.reportServiceConfiguration.ILR1920DataStoreConnectionString, options => options.EnableRetryOnFailure(3, TimeSpan.FromSeconds(3), new List <int>())); return(optionsBuilder.Options); }) .As <DbContextOptions <ILR1920_DataStoreEntities> >() .SingleInstance(); }