public static ConfigurationRootModel BuildContainer(
            ContainerBuilder containerBuilder,
            IServiceFabricConfigurationService serviceFabricConfigurationService)
        {
            IStatelessServiceConfiguration statelessServiceConfiguration = serviceFabricConfigurationService.GetConfigSectionAsStatelessServiceConfiguration();

            containerBuilder.RegisterModule(new StatelessServiceModule(statelessServiceConfiguration));

            ReportServiceConfiguration reportServiceConfiguration = serviceFabricConfigurationService.GetConfigSectionAs <ReportServiceConfiguration>("ReportServiceConfiguration");
            AzureStorageOptions        azureBlobStorageOptions    = serviceFabricConfigurationService.GetConfigSectionAs <AzureStorageOptions>("AzureStorageSection");
            VersionInfo versionInfo = serviceFabricConfigurationService.GetConfigSectionAs <VersionInfo>("VersionSection");

            // register message mapper
            containerBuilder.RegisterType <DefaultJobContextMessageMapper <JobContextMessage> >().As <IMapper <JobContextMessage, JobContextMessage> >();

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

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

            containerBuilder.RegisterType <JobContextMessage>().As <IJobContextMessage>()
            .InstancePerLifetimeScope();

            containerBuilder.RegisterModule <SerializationModule>();

            return(new ConfigurationRootModel
            {
                reportServiceConfiguration = reportServiceConfiguration,
                azureBlobStorageOptions = azureBlobStorageOptions,
                versionInfo = versionInfo
            });
        }
예제 #2
0
        public static ContainerBuilder BuildContainer(IServiceFabricConfigurationService serviceFabricConfigurationService)
        {
            var container = new ContainerBuilder();

            var statelessServiceConfiguration = serviceFabricConfigurationService.GetConfigSectionAsStatelessServiceConfiguration();

            var versionInfo = serviceFabricConfigurationService.GetConfigSectionAs <Service.Config.VersionInfo>("VersionSection");

            container.RegisterInstance(versionInfo).As <IVersionInfo>().SingleInstance();

            container.RegisterModule(new StatelessServiceModule(statelessServiceConfiguration));

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

            container.RegisterModule(new IOModule(azureStorageFileServiceConfiguration));

            container.RegisterModule <StorageModule>();
            container.RegisterModule <ReportsModule>();
            container.RegisterModule <ValidatorModule>();
            container.RegisterModule <StrategyModule>();
            container.RegisterModule <ServicesModule>();
            container.RegisterModule <ControllerModule>();
            container.RegisterModule <DataModule>();
            container.RegisterModule <HelpersModule>();
            container.RegisterModule <SerializationModule>();

            RegisterPersistence(container, serviceFabricConfigurationService);

            container.RegisterType <JobContextMessageHandler>().As <IMessageHandler <JobContextMessage> >();
            container.RegisterType <DateTimeProvider.DateTimeProvider>().As <IDateTimeProvider>();
            return(container);
        }
        public static ContainerBuilder BuildContainer(IServiceFabricConfigurationService serviceFabricConfigurationService)
        {
            var containerBuilder = new ContainerBuilder();

            var statelessServiceConfiguration = serviceFabricConfigurationService.GetConfigSectionAsStatelessServiceConfiguration();

            var persistDataConfig = serviceFabricConfigurationService.GetConfigSectionAs <PersistDataConfiguration>("DataStoreSection");

            containerBuilder.RegisterInstance(persistDataConfig).As <PersistDataConfiguration>();

            var telemetryConfig = serviceFabricConfigurationService.GetConfigSectionAs <TelemetryConfiguration>("TelemetrySection");

            containerBuilder.RegisterInstance(telemetryConfig).As <TelemetryConfiguration>();

            var versionInfo = serviceFabricConfigurationService.GetConfigSectionAs <VersionInfo>("VersionSection");

            containerBuilder.RegisterInstance(versionInfo).As <VersionInfo>();

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

            containerBuilder.RegisterModule(new IOModule(azureStorageFileServiceConfiguration));

            containerBuilder.RegisterType <JobContextMessageDataStoreFactory>().As <IDataStoreContextFactory <IJobContextMessage> >();

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

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

            containerBuilder.RegisterType <FM36HistoryMapper>().As <IFM36HistoryMapper>().InstancePerLifetimeScope();
            containerBuilder.RegisterType <FM36HistoryTransaction>().As <IFM36HistoryTransaction>().InstancePerLifetimeScope();

            containerBuilder.RegisterType <ESFFundingMapper>().As <IESFFundingMapper>().InstancePerLifetimeScope();
            containerBuilder.RegisterType <ESFFundingTransaction>().As <IESFFundingTransaction>().InstancePerLifetimeScope();

            containerBuilder.RegisterModule <DataStoreServicesModule>();
            containerBuilder.RegisterModule <MappersModule>();
            containerBuilder.RegisterModule <ProvidersModule>();
            containerBuilder.RegisterModule <PersistenceModule>();

            containerBuilder.Register((c, p) =>
            {
                return(new TelemetryClient()
                {
                    InstrumentationKey = telemetryConfig.InstrumentationKey
                });
            })
            .As <TelemetryClient>()
            .SingleInstance();

            containerBuilder.RegisterType <ApplicationInsightsTelemetry>()
            .As <ITelemetry>()
            .InstancePerLifetimeScope();

            return(containerBuilder);
        }
        public static ContainerBuilder BuildContainer(IServiceFabricConfigurationService serviceFabricConfigurationService)
        {
            var containerBuilder = new ContainerBuilder();

            var statelessServiceConfiguration = serviceFabricConfigurationService.GetConfigSectionAsStatelessServiceConfiguration();

            // register azure blob storage service
            var azureBlobStorageOptions = serviceFabricConfigurationService.GetConfigSectionAs <AzureStorageOptions>("AzureStorageSection");

            containerBuilder.RegisterInstance(azureBlobStorageOptions).As <IAzureStorageOptions>();
            containerBuilder.Register(c =>
                                      new AzureStorageKeyValuePersistenceConfig(
                                          azureBlobStorageOptions.AzureBlobConnectionString,
                                          azureBlobStorageOptions.AzureBlobContainerName))
            .As <IAzureStorageKeyValuePersistenceServiceConfig>().SingleInstance();

            containerBuilder.RegisterType <AzureStorageKeyValuePersistenceService>()
            .As <IStreamableKeyValuePersistenceService>()
            .InstancePerLifetimeScope();

            var azureStorageFileServiceConfiguration = new AzureStorageFileServiceConfiguration()
            {
                ConnectionString = azureBlobStorageOptions.AzureBlobConnectionString,
            };

            containerBuilder.RegisterInstance(azureStorageFileServiceConfiguration).As <IAzureStorageFileServiceConfiguration>();
            containerBuilder.RegisterType <AzureStorageFileService>().As <IFileService>();

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

            var versionInfo = serviceFabricConfigurationService.GetConfigSectionAs <VersionInfo>("VersionSection");

            containerBuilder.RegisterInstance(versionInfo).As <IVersionInfo>().SingleInstance();

            // register message mapper
            containerBuilder.RegisterType <DefaultJobContextMessageMapper <JobContextMessage> >().As <IMapper <JobContextMessage, JobContextMessage> >();

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

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

            containerBuilder.RegisterType <FileNameService>().As <IFileNameService>();

            containerBuilder.RegisterModule <OrchestrationModule>();
            containerBuilder.RegisterModule <ReportsModule>();

            return(containerBuilder);
        }
        public static ContainerBuilder BuildContainer(IServiceFabricConfigurationService serviceFabricConfigurationService)
        {
            var statelessServiceConfiguration = serviceFabricConfigurationService.GetConfigSectionAsStatelessServiceConfiguration();

            var easServiceConfiguration       = serviceFabricConfigurationService.GetConfigSectionAs <EasServiceConfiguration>("EasServiceConfiguration");
            var fcsServiceConfiguration       = serviceFabricConfigurationService.GetConfigSectionAs <FcsServiceConfiguration>("FcsServiceConfiguration");
            var postcodesServiceConfiguration = serviceFabricConfigurationService.GetConfigSectionAs <PostcodesServiceConfiguration>("PostcodesServiceConfiguration");

            var azureStorageFileServiceConfiguration = new AzureStorageFileServiceConfiguration()
            {
                ConnectionString = easServiceConfiguration.AzureBlobConnectionString,
            };

            var container = new ContainerBuilder();

            container.RegisterModule(new StatelessServiceModule(statelessServiceConfiguration));
            container.RegisterModule <SerializationModule>();
            container.RegisterModule(new IOModule(azureStorageFileServiceConfiguration));
            container.RegisterModule <EASBaseModule>();
            container.RegisterModule <EASServicesModule>();
            container.RegisterModule <DataServicesModule>();
            container.RegisterModule <ValidationModule>();
            container.RegisterModule <ReportsModule>();

            container.RegisterInstance(easServiceConfiguration).As <IEasServiceConfiguration>();

            container.Register(c =>
            {
                DbContextOptions <EasContext> options = new DbContextOptionsBuilder <EasContext>().UseSqlServer(easServiceConfiguration.EasdbConnectionString).UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking).Options;
                EasContext easdbContext = new EasContext(options);
                return(easdbContext);
            }).As <IEasdbContext>().InstancePerDependency();

            container.Register(c =>
            {
                DbContextOptions <FcsContext> options = new DbContextOptionsBuilder <FcsContext>().UseSqlServer(fcsServiceConfiguration.FcsConnectionString).UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking).Options;
                var fcsContext = new FcsContext(options);
                return(fcsContext);
            }).As <IFcsContext>().InstancePerDependency();

            container.Register(c =>
            {
                DbContextOptions <PostcodesContext> options = new DbContextOptionsBuilder <PostcodesContext>().UseSqlServer(postcodesServiceConfiguration.PostcodesConnectionString).UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking).Options;
                var postcodesContext = new PostcodesContext(options);
                return(postcodesContext);
            }).As <IPostcodesContext>().InstancePerDependency();

            return(container);
        }
예제 #6
0
        private static void RegisterPersistence(ContainerBuilder containerBuilder, IServiceFabricConfigurationService serviceFabricConfigurationService)
        {
            var ilrConfig = serviceFabricConfigurationService.GetConfigSectionAs <ILRConfiguration>("ILRSection");

            containerBuilder.RegisterInstance(ilrConfig).As <IILRConfiguration>().SingleInstance();
            containerBuilder.RegisterModule(new DependencyInjectionModule
            {
                Configuration = ilrConfig
            });

            var esfConfig = serviceFabricConfigurationService.GetConfigSectionAs <ESFConfiguration>("ESFSection");

            containerBuilder.Register(c =>
            {
                var options = new DbContextOptionsBuilder <ESFR2Context>()
                              .UseSqlServer(esfConfig.ESFR2ConnectionString)
                              .UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking)
                              .Options;
                return(new ESFR2Context(options));
            }).As <IESFR2Context>();
            containerBuilder.RegisterInstance(esfConfig).As <IESFConfiguration>().SingleInstance();

            containerBuilder.Register(c =>
            {
                var options = new DbContextOptionsBuilder <ESFFundingDataContext>()
                              .UseSqlServer(
                    esfConfig.ESFFundingConnectionString,
                    providerOptions => providerOptions.CommandTimeout(300))
                              .Options;

                return(new ESFFundingDataContext(options));
            }).As <IESFFundingDataContext>();

            var fcsConfig = serviceFabricConfigurationService.GetConfigSectionAs <FCSConfiguration>("FCSSection");

            containerBuilder.RegisterInstance(fcsConfig).As <IFCSConfiguration>().SingleInstance();

            containerBuilder.Register(c =>
            {
                var optionsBuilder = new DbContextOptionsBuilder <FcsContext>();
                optionsBuilder.UseSqlServer(
                    fcsConfig.FCSConnectionString,
                    providerOptions => providerOptions.CommandTimeout(60));
                return(new FcsContext(optionsBuilder.Options));
            })
            .As <IFcsContext>();

            var referenceData = serviceFabricConfigurationService.GetConfigSectionAs <ReferenceDataConfig>("ReferenceDataSection");

            containerBuilder.RegisterInstance(referenceData).As <IReferenceDataConfig>().SingleInstance();

            containerBuilder.Register(c =>
            {
                var referenceDataConfig = c.Resolve <IReferenceDataConfig>();
                var optionsBuilder      = new DbContextOptionsBuilder <LarsContext>();
                optionsBuilder.UseSqlServer(
                    referenceDataConfig.LARSConnectionString,
                    providerOptions => providerOptions.CommandTimeout(60));
                return(new LarsContext(optionsBuilder.Options));
            }).As <ILARSContext>();

            containerBuilder.Register(c =>
            {
                var referenceDataConfig = c.Resolve <IReferenceDataConfig>();
                var optionsBuilder      = new DbContextOptionsBuilder <PostcodesContext>();
                optionsBuilder.UseSqlServer(
                    referenceDataConfig.PostcodesConnectionString,
                    providerOptions => providerOptions.CommandTimeout(60));
                return(new PostcodesContext(optionsBuilder.Options));
            }).As <IPostcodesContext>();

            containerBuilder.Register(c =>
            {
                var referenceDataConfig = c.Resolve <IReferenceDataConfig>();
                var orgOptionsBuilder   = new DbContextOptionsBuilder <OrganisationsContext>();
                orgOptionsBuilder.UseSqlServer(
                    referenceDataConfig.OrganisationConnectionString,
                    providerOptions => providerOptions.CommandTimeout(60));
                return(new OrganisationsContext(orgOptionsBuilder.Options));
            }).As <IOrganisationsContext>();

            containerBuilder.Register(c =>
            {
                var referenceDataConfig = c.Resolve <IReferenceDataConfig>();
                var optionsBuilder      = new DbContextOptionsBuilder <UlnContext>();
                optionsBuilder.UseSqlServer(
                    referenceDataConfig.ULNConnectionString,
                    providerOptions => providerOptions.CommandTimeout(60));
                return(new UlnContext(optionsBuilder.Options));
            }).As <IUlnContext>();
        }