public ILifetimeScope GetChildLifeTimeScope(JobContextMessage jobContextMessage)
        {
            return(_parentLifeTimeScope.BeginLifetimeScope(c =>
            {
                c.RegisterInstance(jobContextMessage).As <IJobContextMessage>();

                var azureBlobStorageOptions = _parentLifeTimeScope.Resolve <IAzureStorageOptions>();
                c.RegisterInstance(new AzureStorageKeyValuePersistenceConfig(
                                       azureBlobStorageOptions.AzureBlobConnectionString,
                                       jobContextMessage.KeyValuePairs[ILRContextKeys.Container].ToString()))
                .As <IAzureStorageKeyValuePersistenceServiceConfig>();

                switch (jobContextMessage.KeyValuePairs["CollectionName"].ToString())
                {
                case CollectionConstants.IlrCollectionName:
                    c.RegisterModule <DataModule>();
                    break;

                case CollectionConstants.EasCollectionName:
                    IServiceFabricConfigurationService serviceFabricConfigurationService = new ServiceFabricConfigurationService();
                    var databaseConfiguration = serviceFabricConfigurationService.GetConfigSectionAs <DatabaseConfiguration>("DatabaseConfiguration");

                    c.RegisterModule(new EasDataModule(databaseConfiguration));
                    break;
                }
            }));
        }
コード例 #2
0
        /// <summary>
        /// This is the entry point of the service host process.
        /// </summary>
        private static void Main()
        {
            try
            {
                // The ServiceManifest.XML file defines one or more service type names.
                // Registering a service maps a service type name to a .NET type.
                // When Service Fabric creates an instance of this service type,
                // an instance of the class is created in this host process.

                IServiceFabricConfigurationService serviceFabricConfigurationService = new ServiceFabricConfigurationService();

                var builder = DIComposition.BuildContainer(serviceFabricConfigurationService);

                builder.RegisterServiceFabricSupport();

                builder.RegisterStatelessService <ServiceFabric.Common.Stateless>("ESFA.DC.EAS2021.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;
            }
        }
コード例 #3
0
        protected override void Load(ContainerBuilder containerBuilder)
        {
            var serviceFabricConfigurationService = new ServiceFabricConfigurationService();

            var statelessServiceConfiguration        = serviceFabricConfigurationService.GetConfigSectionAsStatelessServiceConfiguration();
            var azureStorageFileServiceConfiguration = serviceFabricConfigurationService.GetConfigSectionAs <AzureStorageFileServiceConfiguration>("AzureStorageFileServiceConfiguration");

            containerBuilder.RegisterModule(new StatelessServiceModule(statelessServiceConfiguration));
            containerBuilder.RegisterModule(new IOModule(azureStorageFileServiceConfiguration));

            containerBuilder.RegisterModule <BaseModule>();
            containerBuilder.RegisterModule <CondenserModule>();
            containerBuilder.RegisterModule <DataCacheModule>();
            containerBuilder.RegisterModule <ProviderModule>();
            containerBuilder.RegisterModule <SerializationModule>();
            containerBuilder.RegisterModule <StatelessActorModule>();

            // register MessageHandler
            containerBuilder.RegisterType <MessageHandler>().As <IMessageHandler <JobContextMessage> >().InstancePerLifetimeScope();
            containerBuilder.RegisterType <DefaultJobContextMessageMapper <JobContextMessage> >().As <IMapper <JobContextMessage, JobContextMessage> >().InstancePerLifetimeScope();

            containerBuilder.RegisterType <DateTimeProvider.DateTimeProvider>().As <IDateTimeProvider>();

            containerBuilder.RegisterType <FundingServiceContext>().As <IFundingServiceContext>().InstancePerLifetimeScope();
            containerBuilder.RegisterType <FundingOrchestrationService>().As <IFundingOrchestrationService>();
        }
コード例 #4
0
        public static void Main()
        {
            try
            {
                IServiceFabricConfigurationService serviceFabricConfigurationService = new ServiceFabricConfigurationService();

                // Setup Autofac
                ContainerBuilder builder = DIComposition.BuildContainer(serviceFabricConfigurationService);

                // Register the Autofac magic for Service Fabric support.
                builder.RegisterServiceFabricSupport();

                // Register the stateless service.
                builder.RegisterStatelessService <ServiceFabric.Common.Stateless>("ESFA.DC.ILR2021.ReportService.StatelessType");

                using (var container = builder.Build())
                {
                    //var entryPoint = container.Resolve<IEntryPoint>();
                    var reports = container.Resolve <IEnumerable <IReport> >();

                    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;
            }
        }
コード例 #5
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;
            }
        }
        /// <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));

                // Setup Autofac
                ContainerBuilder builder = DIComposition.BuildContainer();

                // Register the Autofac magic for Service Fabric support.
                builder.RegisterServiceFabricSupport();

                // Register the stateless service.
                builder.RegisterStatelessService <ServiceFabric.Common.Stateless>("ESFA.DC.Operations.Reports.StatelessType");

                using (var container = builder.Build())
                {
                    var excelFileService = container.Resolve <IExcelFileService>();
                    if (!string.IsNullOrEmpty(softwareLicenceSection.AsposeLicence))
                    {
                        using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(softwareLicenceSection.AsposeLicence.Replace("&lt;", "<").Replace("&gt;", ">"))))
                        {
                            excelFileService.ApplyLicense(ms);
                        }
                    }

                    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.ToString());
                throw;
            }
        }
        public static ContainerBuilder BuildContainer()
        {
            var containerBuilder = new ContainerBuilder();

            IServiceFabricConfigurationService serviceFabricConfigurationService = new ServiceFabricConfigurationService();

            var statelessServiceConfiguration = serviceFabricConfigurationService.GetConfigSectionAsStatelessServiceConfiguration();
            var reportServiceConfiguration    = serviceFabricConfigurationService.GetConfigSectionAs <ReportServiceConfiguration>("ReportServiceConfiguration");

            var azureStorageFileServiceConfiguration = serviceFabricConfigurationService.GetConfigSectionAs <AzureStorageFileServiceConfiguration>("AzureStorageFileServiceConfiguration");
            var ioConfiguration = serviceFabricConfigurationService.GetConfigSectionAs <IOConfiguration>("IOConfiguration");

            containerBuilder.RegisterModule(new StatelessBaseModule(statelessServiceConfiguration));
            containerBuilder.RegisterModule(new IOModule(azureStorageFileServiceConfiguration, ioConfiguration));
            containerBuilder.RegisterModule(new DataModule(reportServiceConfiguration));
            containerBuilder.RegisterModule <ReportsServiceModule>();
            containerBuilder.RegisterModule <CollectionTypeFormattersModule>();
            containerBuilder.RegisterModule <ReportsModule>();

            return(containerBuilder);
        }
コード例 #8
0
        private static ContainerBuilder BuildContainerBuilder()
        {
            var containerBuilder = new ContainerBuilder();

            var serviceFabricConfigurationService = new ServiceFabricConfigurationService();

            var statelessServiceConfiguration = serviceFabricConfigurationService.GetConfigSectionAsStatelessServiceConfiguration();

            // get ServiceBus, Azurestorage config values and register container
            var serviceBusOptions = serviceFabricConfigurationService.GetConfigSectionAs <ServiceBusConfig>("StatelessServiceConfiguration");

            containerBuilder.RegisterInstance(serviceBusOptions).As <IServiceBusConfig>().SingleInstance();

            var topicSubscribeConfig = new TopicConfiguration(
                serviceBusOptions.ServiceBusConnectionString,
                serviceBusOptions.TopicName,
                serviceBusOptions.SubscriptionName,
                1,
                maximumCallbackTimeSpan: TimeSpan.FromMinutes(60));

            containerBuilder.Register(c =>
            {
                var topicSubscriptionSevice =
                    new TopicSubscriptionSevice <JobContextMessage>(
                        topicSubscribeConfig,
                        c.Resolve <ISerializationService>(),
                        c.Resolve <ILogger>());
                return(topicSubscriptionSevice);
            }).As <ITopicSubscriptionService <JobContextMessage> >();

            containerBuilder.RegisterModule(new StatelessServiceModule(statelessServiceConfiguration));
            containerBuilder.RegisterModule <SerializationModule>();
            containerBuilder.RegisterType <JobContextMessageHandler>().As <IMessageHandler <JobContextMessage> >();

            var summarisationDataOptions = serviceFabricConfigurationService.GetConfigSectionAs <SummarisationDataOptions>("ReferenceDataSection");

            containerBuilder.RegisterModule(new SummarisationModule(summarisationDataOptions));

            return(containerBuilder);
        }
コード例 #9
0
        protected override void Load(ContainerBuilder containerBuilder)
        {
            var serviceFabricConfigurationService = new ServiceFabricConfigurationService();

            var statelessServiceConfiguration        = serviceFabricConfigurationService.GetConfigSectionAsStatelessServiceConfiguration();
            var azureStorageFileServiceConfiguration = serviceFabricConfigurationService.GetConfigSectionAs <AzureStorageFileServiceConfiguration>("AzureStorageFileServiceConfiguration");
            var ioConfiguration      = serviceFabricConfigurationService.GetConfigSectionAs <IOConfiguration>("IOConfiguration");
            var referenceDataOptions = serviceFabricConfigurationService.GetConfigSectionAs <ReferenceDataOptions>("ReferenceDataSection");
            var desktopRefDataConfig = serviceFabricConfigurationService.GetConfigSectionAs <DesktopReferenceDataConfiguration>("DesktopReferenceDataSection");

            containerBuilder.RegisterInstance(desktopRefDataConfig).As <IDesktopReferenceDataConfiguration>();

            var featureConfiguration = serviceFabricConfigurationService.GetConfigSectionAs <FeatureConfiguration>("FeatureConfiguration");

            containerBuilder.RegisterInstance(featureConfiguration).As <FeatureConfiguration>().SingleInstance();

            var apiSettings = serviceFabricConfigurationService.GetConfigSectionAs <ApiSettings>("ApiSettings");

            containerBuilder.RegisterInstance(apiSettings).As <ApiSettings>().SingleInstance();

            containerBuilder.Register(c =>
            {
                var jitter = new Random();

                return(Policy.Handle <Exception>()
                       .WaitAndRetryAsync(3, retryAttempt =>
                                          TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))
                                          + TimeSpan.FromMilliseconds(jitter.Next(0, 100))));
            }).As <IAsyncPolicy>().SingleInstance();

            containerBuilder.RegisterModule <BaseModule>();
            containerBuilder.RegisterModule(new StatelessServiceModule(statelessServiceConfiguration));
            containerBuilder.RegisterModule(new IOModule(azureStorageFileServiceConfiguration, ioConfiguration));
            containerBuilder.RegisterModule(new RepositoryModule(referenceDataOptions));
            containerBuilder.RegisterModule <SerializationModule>();
            containerBuilder.RegisterModule <ReferenceDataRepositoryServicesModule>();
            containerBuilder.RegisterType <DateTimeProvider.DateTimeProvider>().As <IDateTimeProvider>();
            containerBuilder.RegisterType <MessageHandler>().As <IMessageHandler <JobContextMessage> >();
        }
コード例 #10
0
        private static ContainerBuilder BuildContainerBuilder()
        {
            var containerBuilder = new ContainerBuilder();

            var serviceFabricConfigurationService = new ServiceFabricConfigurationService();

            var statelessServiceConfiguration        = serviceFabricConfigurationService.GetConfigSectionAsStatelessServiceConfiguration();
            var azureStorageFileServiceConfiguration = serviceFabricConfigurationService.GetConfigSectionAs <AzureStorageFileServiceConfiguration>("AzureStorageFileServiceConfiguration");
            var ioConfiguration = serviceFabricConfigurationService.GetConfigSectionAs <IOConfiguration>("IOConfiguration");

            containerBuilder.RegisterModule(new StatelessServiceModule(statelessServiceConfiguration));
            containerBuilder.RegisterModule <SerializationModule>();

            containerBuilder.RegisterModule <FileValidationOrchestrationServicesModule>();
            containerBuilder.RegisterModule(new IOModule(azureStorageFileServiceConfiguration, ioConfiguration));
            containerBuilder.RegisterModule <ValidatorModule>();
            containerBuilder.RegisterModule <MapperModule>();

            containerBuilder.RegisterType <MessageHandler>().As <IMessageHandler <JobContextMessage> >();

            return(containerBuilder);
        }
コード例 #11
0
        private static ContainerBuilder BuildContainer()
        {
            var configHelper     = new ConfigurationHelper();
            var containerBuilder = new ContainerBuilder();

            var serviceFabricConfigurationService = new ServiceFabricConfigurationService();

            var statelessServiceConfiguration        = serviceFabricConfigurationService.GetConfigSectionAsStatelessServiceConfiguration();
            var azureStorageFileServiceConfiguration = serviceFabricConfigurationService.GetConfigSectionAs <AzureStorageFileServiceConfiguration>("AzureStorageFileServiceConfiguration");

            containerBuilder.RegisterModule(new StatelessServiceModule(statelessServiceConfiguration));
            containerBuilder.RegisterModule <SerializationModule>();

            containerBuilder.RegisterModule <PreValidationServiceModule>();
            containerBuilder.RegisterModule(new IOModule(azureStorageFileServiceConfiguration));

            containerBuilder.RegisterType <DefaultJobContextMessageMapper <JobContextMessage> >().As <IMapper <JobContextMessage, JobContextMessage> >();
            containerBuilder.RegisterType <MessageHandler>().As <IMessageHandler <JobContextMessage> >();
            containerBuilder.RegisterType <JobContextMessageValidationContextFactory>().As <IValidationContextFactory <IJobContextMessage> >();

            containerBuilder.RegisterType <JobContextManager <JobContextMessage> >().As <IJobContextManager <JobContextMessage> >().InstancePerLifetimeScope();

            return(containerBuilder);
        }
コード例 #12
0
        public static ContainerBuilder BuildContainer()
        {
            var containerBuilder = new ContainerBuilder();

            IServiceFabricConfigurationService serviceFabricConfigurationService = new ServiceFabricConfigurationService();

            var statelessServiceConfiguration        = serviceFabricConfigurationService.GetConfigSectionAsStatelessServiceConfiguration();
            var reportServiceConfiguration           = serviceFabricConfigurationService.GetConfigSectionAs <ReportServiceConfiguration>("ReportServiceConfiguration");
            var azureStorageFileServiceConfiguration = serviceFabricConfigurationService.GetConfigSectionAs <AzureStorageFileServiceConfiguration>("AzureStorageFileServiceConfiguration");

            containerBuilder.RegisterType <ILR2021_DataStoreEntities>().As <IIlr2021Context>();
            containerBuilder.RegisterType <ILR1920_DataStoreEntities>().As <IIlr1920RulebaseContext>();
            containerBuilder.RegisterType <ILR1819_DataStoreEntities>().As <IIlr1819RulebaseContext>();
            containerBuilder.RegisterType <PimsContext>().As <IPimsContext>();
            containerBuilder.RegisterType <FundingClaimsDataContext>().As <IFundingClaimsDataContext>().ExternallyOwned();
            containerBuilder.RegisterInstance(reportServiceConfiguration).As <IReportServiceConfiguration>();

            containerBuilder.Register(context =>
            {
                var optionsBuilder = new DbContextOptionsBuilder <ILR1819_DataStoreEntities>();
                optionsBuilder.UseSqlServer(
                    reportServiceConfiguration.IlrDataStore1819ConnectionString,
                    options => options.EnableRetryOnFailure(3, TimeSpan.FromSeconds(3), new List <int>()));

                return(optionsBuilder.Options);
            })
            .As <DbContextOptions <ILR1819_DataStoreEntities> >()
            .SingleInstance();

            containerBuilder.Register(context =>
            {
                var optionsBuilder = new DbContextOptionsBuilder <ILR1920_DataStoreEntities>();
                optionsBuilder.UseSqlServer(
                    reportServiceConfiguration.IlrDataStore1920ConnectionString,
                    options => options.EnableRetryOnFailure(3, TimeSpan.FromSeconds(3), new List <int>()));

                return(optionsBuilder.Options);
            })
            .As <DbContextOptions <ILR1920_DataStoreEntities> >()
            .SingleInstance();

            containerBuilder.Register(context =>
            {
                var optionsBuilder = new DbContextOptionsBuilder <ILR2021_DataStoreEntities>();
                optionsBuilder.UseSqlServer(
                    reportServiceConfiguration.IlrDataStore2021ConnectionString,
                    options => options.EnableRetryOnFailure(3, TimeSpan.FromSeconds(3), new List <int>()));

                return(optionsBuilder.Options);
            })
            .As <DbContextOptions <ILR2021_DataStoreEntities> >()
            .SingleInstance();

            containerBuilder.Register(context =>
            {
                var optionsBuilder = new DbContextOptionsBuilder <PimsContext>();
                optionsBuilder.UseSqlServer(
                    reportServiceConfiguration.PimsDataConnectionString,
                    options => options.EnableRetryOnFailure(3, TimeSpan.FromSeconds(3), new List <int>()));

                return(optionsBuilder.Options);
            })
            .As <DbContextOptions <PimsContext> >()
            .SingleInstance();

            containerBuilder.Register(context =>
            {
                var optionsBuilder = new DbContextOptionsBuilder <FundingClaimsDataContext>();
                optionsBuilder.UseSqlServer(
                    reportServiceConfiguration.FundingClaimsConnectionString,
                    options => options.EnableRetryOnFailure(3, TimeSpan.FromSeconds(3), new List <int>()));

                return(optionsBuilder.Options);
            })
            .As <DbContextOptions <FundingClaimsDataContext> >()
            .SingleInstance();

            containerBuilder.RegisterModule(new StatelessBaseModule(statelessServiceConfiguration));
            containerBuilder.RegisterModule <SerializationModule>();
            containerBuilder.RegisterModule(new IOModule(azureStorageFileServiceConfiguration));
            containerBuilder.RegisterModule <ReportsServiceModule>();
            containerBuilder.RegisterModule <ReportsModule>();

            return(containerBuilder);
        }