示例#1
0
 public static IServiceCollection ConfigureContainer(this IServiceCollection services, IConfiguration configuration)
 {
     DataModule.Register(services, configuration);
     DomainModule.Register(services);
     InfrastructureModule.Register(services, configuration);
     return(services);
 }
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            InfrastructureModule.Register(services,
                                          Configuration.GetConnectionString("DefaultConnection"),
                                          GetType().Assembly.FullName);

            BusinessLogicModule.Register(services);

            ApplicationServiceModule.Register(services);

            services.AddDefaultIdentity <User>()
            .AddEntityFrameworkStores <ApplicationDbContext>();

            services.AddAutoMapper();
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Info
                {
                    Version        = "v1",
                    Title          = "ASP.Net Core Startup Project",
                    Description    = "Ready Made Repository Pattern for you to build on",
                    TermsOfService = "None",
                    Contact        = new Contact()
                    {
                        Name = "Coding_Maestro", Email = "folidominic97@gmail", Url = "https://www.linkedin.com/in/dominic-foli-8275b4136/"
                    }
                });
            });
        }
示例#3
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure <DatabaseConfig>(Configuration.GetSection("Database"));
            services.Configure <GeneralConfig>(Configuration.GetSection("General"));
            services.Configure <EntityConfig>(Configuration.GetSection("Entity"));

            configureCORS(services);

            //Application Core
            ApplicationCore.ConfigureApplicationCore(services);
            var validationRulesConfig = Configuration.GetSection("Entity:ValidationRules").Get <EntityConfig.ValidationRulesConfig>();

            ApplicationCore.ConfigureValidationRules(services, validationRulesConfig);

            //Infrastructure
            InfrastructureModule.ConfiguresInfrastructure(services, Configuration, HostEnvironment.ContentRootPath);

            services.AddHostedService <MigratorDBHostedService>();

            services.AddControllers();
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo {
                    Title = "WebAPI", Version = "v1"
                });
            });

            services.AddAutoMapper(typeof(WebAPI.ModelViews.AutoMapperConfiguration), typeof(PhotoSi.AC.AutoMapperConfiguration));
        }
示例#4
0
        public MappingService()
        {
            var profiles      = InfrastructureModule.GetAutoMapperProfiles();
            var configuration = new MapperConfiguration(cfg => cfg.AddProfiles(profiles));

            this.mapper = new Mapper(configuration);
            Mapper      = this.mapper;
        }
示例#5
0
 public static void RegisterModules(IServiceCollection services)
 {
     AuthenticateModule.Register(services);
     DomainModule.RegisterModules(services);
     TestLusherModule.RegisterModules(services);
     PsychoBioTestModule.RegisterModules(services);
     InfrastructureModule.RegisterModules(services);
 }
示例#6
0
        private void Init()
        {
            _servicesCollection = new ServiceCollection();

            // mock with memory database
            _servicesCollection.AddDbContext <MyExpensesContext>(options => options.UseInMemoryDatabase(Guid.NewGuid().ToString()));

            // configure all others projects
            InfrastructureModule.ConfigureServices(_servicesCollection);

            // build
            _serviceProvider = _servicesCollection.BuildServiceProvider();
        }
示例#7
0
        public static async Task Main(string[] args)
        {
            if (args.Length > 0)
            {
                Environment.SetEnvironmentVariable("SAMPLEAPP_ENVIRONMENT", args[0]);
            }

            var env = Environment.GetEnvironmentVariable("SAMPLEAPP_ENVIRONMENT") ?? "Development";

            env = env.ToLower();

            var endpointName = typeof(Program).Namespace;

            if (!string.IsNullOrEmpty(endpointName))
            {
                Console.Title = $"{endpointName} [{env}]";
            }

            _configuration = new ConfigurationBuilder()
                             .SetBasePath(Directory.GetCurrentDirectory())
                             .AddEnvironmentVariables("SAMPLEAPP_")
                             .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                             .AddJsonFile($"appsettings.{env}.json", optional: true, reloadOnChange: true)
                             .AddJsonFile($"config/appsettings.{env}.secrets.json", optional: true, reloadOnChange: true)
                             .Build();

            var ordersDomainOptions = GetOptions <OrdersDomainOptions>(_configuration);
            var ordersClientOptions = GetOptions <OrdersClientOptions>(_configuration);

            var host = Host
                       .CreateDefaultBuilder(args)
                       .UseConsoleLifetime()
                       .AddSharedInfrastructure(_configuration, endpointName)
                       .ConfigureServices(
                services =>
            {
                services
                .AddOrdersDomain(ordersDomainOptions)
                .AddOrdersClient(ordersClientOptions);
            })
                       .ConfigureAppConfiguration(
                (hostingContext, builder) =>
            {
                hostingContext.HostingEnvironment.EnvironmentName = env;
            })
                       .Build();

            InfrastructureModule.Initialize(host);

            await host.RunAsync();
        }
示例#8
0
        public static void RegisterComponents()
        {
            BusinessServiceModule _BusinessServiceModule = new BusinessServiceModule();
            InfrastructureModule  _InfrastructureModule  = new InfrastructureModule();

            var container = new UnityContainer();

            // register all your components with the container here

            _InfrastructureModule.Load(container);
            _BusinessServiceModule.Load(container);

            GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
        }
        public void Send_UpdateKmStand_Command_Test1()
        {
            Container container = new Container();

            container.Options.AllowResolvingFuncFactories();
            container.Options.AllowOverridingRegistrations = true;

            ObjectFactory objectFactory = new ObjectFactory(container);

            container.RegisterSingleton <IObjectFactory>(objectFactory);

            var eventPublisher = new EventPublisher(objectFactory);

            container.RegisterSingleton <IEventPublisher>(eventPublisher);

            container.Register <IAggregateFactory, AggregateFactory>();

            InfrastructureModule.RegisterServices(container);

            var assemblies = AppDomain.CurrentDomain.GetAssemblies();

            // register command handlers
            container.Register(typeof(ICommandHandler <>), assemblies);

            var typesToRegister = container.GetTypesToRegister(
                typeof(IDomainEventHandler <>),
                //new[] { typeof(RitAutoCreatorService).Assembly, typeof(KmStandService).Assembly },
                new[] { typeof(KmStandService).Assembly },
                new TypesToRegisterOptions
            {
                IncludeGenericTypeDefinitions = true,
                IncludeComposites             = false,
            });

            typesToRegister = typesToRegister.Append(typeof(SimpleBus));

            container.RegisterCollection(typeof(IDomainEventHandler <>), typesToRegister);

            container.RegisterSingleton <ICommandBus>(new SimpleBus(container));

            ICommandBus bus = container.GetInstance <ICommandBus>();

            bus.Send(new UpdateKmStand(Guid.Parse("d6a8eb8e-690a-4eea-94ab-d300458c4b10"), 3000, DateTime.Now, Guid.Empty));
        }
示例#10
0
        public static void Main(string[] args)
        {
            if (args.Length > 0)
            {
                Environment.SetEnvironmentVariable("SAMPLEAPP_ENVIRONMENT", args[0]);
            }

            var env = Environment.GetEnvironmentVariable("SAMPLEAPP_ENVIRONMENT") ?? "Development";

            env = env.ToLower();

            var configuration = new ConfigurationBuilder()
                                .SetBasePath(Directory.GetCurrentDirectory())
                                .AddEnvironmentVariables("SAMPLEAPP_")
                                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                                .AddJsonFile($"appsettings.{env}.json", optional: true, reloadOnChange: true)
                                .AddJsonFile($"config/appsettings.{env}.secrets.json", optional: true, reloadOnChange: true)
                                .Build();

            var ordersClientOptions = GetOptions <OrdersClientOptions>(configuration);

            var host = Host
                       .CreateDefaultBuilder(args)
                       .AddSharedInfrastructure(configuration, typeof(Program).Namespace)
                       .ConfigureServices(
                services =>
            {
                services
                .AddScoped <OrdersService>()
                .AddSingleton <WeatherForecastService>()
                .AddOrdersClient(ordersClientOptions);
            })
                       .ConfigureWebHostDefaults(
                webBuilder =>
            {
                webBuilder.UseStartup <Startup>();
            })
                       .Build();

            InfrastructureModule.Initialize(host);

            host.Run();
        }
示例#11
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure <CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded    = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            InfrastructureModule.Register(services,
                                          Configuration.GetConnectionString("DefaultConnection"),
                                          GetType().Assembly.FullName);

            BusinessLogicModule.Register(services);

            ApplicationServiceModule.Register(services);

            services.AddDefaultIdentity <User>()
            .AddEntityFrameworkStores <ApplicationDbContext>();
            services.AddAutoMapper();
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        }
示例#12
0
        public List <Type> GetModules()
        {
            var modules    = new List <Type>();
            var assemblies = AssemblyHelper.GetAllAssembliesInFolder(Folder, SearchOption);

            foreach (var assembly in assemblies)
            {
                try
                {
                    foreach (var type in assembly.GetTypes())
                    {
                        if (InfrastructureModule.IsModule(type))
                        {
                            modules.AddIfNotContains(type);
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw new InitializationException("Could not get module types from assembly: " + assembly.FullName, ex);
                }
            }
            return(modules);
        }
示例#13
0
        private static void Main()
        {
            using (var container = new Container())
            {
                container.Options.AllowResolvingFuncFactories();
                // configuration appsettings convention
                IConfiguration configuration = new ConfigurationBuilder()

                                               .SetBasePath(Directory.GetCurrentDirectory())
                                               .AddJsonFile(path: "appsettings.json", optional: false, reloadOnChange: true)
                                               .AddEnvironmentVariables()
                                               .Build();
                container.Options.RegisterParameterConvention(new AppSettingsConvention(key => configuration[key]));

                ILoggerFactory loggerFactory = new LoggerFactory()
                                               .AddConsole()
                                               .AddDebug();

                container.Options.DependencyInjectionBehavior = new MsContextualLoggerInjectionBehavior(loggerFactory, container);

                ILogger logger = loggerFactory.CreateLogger <Program>();
                //container.RegisterSingleton<ILogger>(logger);
                logger.LogInformation("Starting BC 'KmStanden' host...");

                ExampleCQRS.Infrastructure.Registrations.InfrastructureModule.RegisterEventBus(container, configuration);

                DomainModule.RegisterAll(container);
                ApplicationModule.RegisterAll(container);
                InfrastructureModule.RegisterAll(container);
                InfrastructureModule.RegisterEventForwarder(container);
                RabbitMqModule.RegisterCommandConsumers(container);

                var bus = Bus.Factory.CreateUsingRabbitMq(cfg =>
                {
                    var host = cfg.Host(new Uri(configuration["CommandBusConnection"]), hst =>
                    {
                        hst.Username(configuration["CommandBusUserName"]);
                        hst.Password(configuration["CommandPassword"]);
                    });

                    cfg.SeparatePublishFromSendTopology();
                    // command queue
                    cfg.ReceiveEndpoint(host,
                                        RabbitMqConstants.CommandsQueue, e =>
                    {
                        e.LoadFrom(container);
                    });
                });

                container.RegisterSingleton(bus);

                //container.RegisterSingleton(RabbitMqConfiguration.ConfigureBus((cfg, host) =>
                //{
                //    cfg.SeparatePublishFromSendTopology();
                //    // command queue
                //    cfg.ReceiveEndpoint(host,
                //        RabbitMqConstants.CommandsQueue, e =>
                //        {
                //            e.LoadFrom(container);
                //        });
                //}));

                using (var eventBus = container.GetInstance <IIntegrationEventBus>())
                {
                    var cbus = container.GetInstance <IBusControl>();

                    cbus.StartAsync();

                    Console.WriteLine("Listening for commands.. Press enter to exit");
                    Console.ReadLine();

                    cbus.StopAsync();
                }
            }
        }
示例#14
0
 // This method gets called by the runtime. Use this method to add services to the container.
 public void ConfigureServices(IServiceCollection services)
 {
     services.AddControllersWithViews();
     InfrastructureModule.RegisterServices(services, Configuration);
 }
示例#15
0
        private static void Main()
        {
            using (var container = new Container())
            {
                container.Options.AllowResolvingFuncFactories();
                // configuration appsettings convention
                IConfiguration config = new ConfigurationBuilder()
                                        .SetBasePath(Directory.GetCurrentDirectory())
                                        .AddJsonFile(path: "appsettings.json", optional: false, reloadOnChange: true)
                                        .AddEnvironmentVariables()
                                        .Build();
                container.Options.RegisterParameterConvention(new AppSettingsConvention(key => config[key]));

                ILoggerFactory loggerFactory = new LoggerFactory()
                                               .AddConsole()
                                               .AddDebug();
                container.Options.DependencyInjectionBehavior = new MsContextualLoggerInjectionBehavior(loggerFactory, container);

                ILogger logger = loggerFactory.CreateLogger <Program>();
                //container.RegisterSingleton<ILogger>(logger);
                logger.LogInformation("Starting BC 'Ritten' host...");

                ExampleCQRS.Infrastructure.Registrations.InfrastructureModule.RegisterEventBus(container, config);

                DomainModule.RegisterAll(container);
                ApplicationModule.RegisterAll(container);
                InfrastructureModule.RegisterAll(container);
                InfrastructureModule.RegisterEventForwarder(container);
                RabbitMqModule.RegisterCommandConsumers(container);
                RabbitMqModule.RegisterEventConsumers(container);

                //ReadModel.Infrastructure.Registrations.InfrastructureModule.RegisterAll(container);

                container.RegisterSingleton(RabbitMqConfiguration.ConfigureBus((cfg, host) =>
                {
                    // command queue
                    //cfg.ReceiveEndpoint(host,
                    //    RabbitMqConstants.CommandsQueue, e =>
                    //    {
                    //        e.Handler<ICommand>(context =>
                    //        Console.Out.WriteLineAsync($"Command received : {context.Message.GetType()}"));
                    //        //e.LoadFrom(container);// TODO: prevent receiving same events
                    //    });
                    // events queue
                    cfg.ReceiveEndpoint(host, RabbitMqConstants.GetEventsQueue(BoundedContextName), e =>
                    {
                        e.Handler <IDomainEvent>(context =>
                                                 Console.Out.WriteLineAsync($"Event received : {context.Message.GetType()}"));
                        e.LoadFrom(container);
                    });
                }));

                EventMappings.Configure();

                var eventBus = container.GetInstance <IIntegrationEventBus>();
                eventBus.Subscribe <KmStandCreated, RitService>();

                //var bus = container.GetInstance<IBusControl>();

                //bus.StartAsync();

                Console.WriteLine("Listening for commands.. Press enter to exit");
                Console.ReadLine();

                //bus.StopAsync();
            }
        }