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/" } }); }); }
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)); }
public MappingService() { var profiles = InfrastructureModule.GetAutoMapperProfiles(); var configuration = new MapperConfiguration(cfg => cfg.AddProfiles(profiles)); this.mapper = new Mapper(configuration); Mapper = this.mapper; }
public static void RegisterModules(IServiceCollection services) { AuthenticateModule.Register(services); DomainModule.RegisterModules(services); TestLusherModule.RegisterModules(services); PsychoBioTestModule.RegisterModules(services); InfrastructureModule.RegisterModules(services); }
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(); }
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(); }
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)); }
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(); }
// 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); }
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); }
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(); } } }
// 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); }
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(); } }