public static IServiceLocator Configure(Database database, string connectionString, bool withAspects, bool externalConfiguration) { var state = new SystemState(); var builder = new ContainerBuilder(); builder.RegisterInstance(state).As<ISystemState>(); SetupExtensibility(builder, withAspects, externalConfiguration); if (database == Core.Database.Postgres) SetupPostgres(builder, connectionString); //else //SetupOracle(builder, connectionString); SetupPatterns(builder); SetupSerialization(builder); builder.RegisterType<PermissionManager>().As<IPermissionManager>().SingleInstance(); builder.RegisterType<OnContainerBuild>().As<IStartable>(); if (externalConfiguration) builder.RegisterModule(new ConfigurationSettingsReader("autofacConfiguration")); var factory = builder.Build().Resolve<IObjectFactory>(); state.IsBooting = false; state.Started(factory); return factory.Resolve<IServiceLocator>(); }
public static IServiceLocator Configure(Database database, string connectionString, bool withAspects) { var state = new SystemState(); var builder = new ContainerBuilder(); builder.RegisterInstance(state).As<ISystemState>(); SetupExtensibility(builder, withAspects); if (database == Core.Database.Postgres) SetupPostgres(builder, connectionString); //else //SetupOracle(builder, connectionString); SetupPatterns(builder); SetupSerialization(builder); builder.RegisterType<PermissionManager>().As<IPermissionManager>().SingleInstance(); builder.RegisterType<LogFactory>().As<ILogFactory>().SingleInstance(); builder.RegisterType<NLogLogger>().As<ILogger>(); var container = builder.Build(); var init = container.Resolve<SystemInitialization>(); init.Initialize(false); var factory = container.Resolve<IObjectFactory>(); //TODO init model factory.Resolve<IDomainModel>(); state.IsBooting = false; state.Started(factory); return factory.Resolve<IServiceLocator>(); }
public static IServiceProvider Configure(DSL.Core.Container container, Database database, string connectionString, bool withAspects, bool externalConfiguration) { var dllPlugins = externalConfiguration == false ? new string[0] : (from key in ConfigurationManager.AppSettings.AllKeys where key.StartsWith("PluginsPath", StringComparison.OrdinalIgnoreCase) let path = ConfigurationManager.AppSettings[key] let pathRelative = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, path) let chosenPath = Directory.Exists(pathRelative) ? pathRelative : path select chosenPath) .ToArray(); var assemblies = from asm in Revenj.Utility.AssemblyScanner.GetAssemblies() where asm.FullName.StartsWith("Revenj.") select asm; var state = new SystemState(); var builder = container == DSL.Core.Container.Autofac ? Revenj.Extensibility.Setup.UseAutofac(assemblies, dllPlugins, externalConfiguration, false, withAspects) : Revenj.Extensibility.Setup.UseDryIoc(assemblies, dllPlugins, false); builder.RegisterSingleton<ISystemState>(state); if (database == Core.Database.Postgres) SetupPostgres(builder, connectionString); else SetupOracle(builder, connectionString); var serverModels = (from asm in Revenj.Utility.AssemblyScanner.GetAssemblies() let type = asm.GetType("SystemBoot.Configuration") where type != null && type.GetMethod("Initialize") != null select asm) .ToList(); builder.ConfigurePatterns(_ => serverModels); builder.ConfigureSerialization(); builder.ConfigureSecurity(false); var factory = builder.Build(); factory.Resolve<IDomainModel>();//TODO: explicit model initialization state.IsBooting = false; state.Started(factory); return factory; }
public static IServiceProvider Setup( Revenj.Extensibility.Setup.IContainerBuilder builder, bool withAspects, bool externalConfiguration, params Action<IObjectFactoryBuilder>[] setupExternal) { var state = new SystemState(); builder.RegisterSingleton<ISystemState>(state); foreach (var se in setupExternal) se(builder); var serverModels = (from asm in Revenj.Utility.AssemblyScanner.GetAssemblies() let type = asm.GetType("SystemBoot.Configuration") where type != null && type.GetMethod("Initialize") != null select asm) .ToList(); builder.ConfigurePatterns(_ => serverModels); builder.ConfigureSerialization(); builder.ConfigureSecurity(false); builder.RegisterFunc<IEnumerable<Assembly>>(f => AssemblyScanner.GetAssemblies()); builder.RegisterFunc<IEnumerable<Type>>(f => AssemblyScanner.GetAllTypes()); var factory = builder.Build(); factory.Resolve<IDomainModel>();//TODO: explicit model initialization state.IsBooting = false; state.Started(factory); return factory; }