Exemplo n.º 1
0
        /// <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("&lt;", "<").Replace("&gt;", ">"))))
                    {
                        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();
            }
        }
Exemplo n.º 3
0
        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("&lt;", "<").Replace("&gt;", ">"))))
                {
                    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}");
            }
        }
Exemplo n.º 5
0
        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();
        }