예제 #1
0
        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>();
        }
예제 #2
0
        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>();
        }
예제 #3
0
        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;
        }
예제 #4
0
파일: Core.cs 프로젝트: ngs-doo/revenj
        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;
        }