Exemple #1
0
        public void Run(string settingName = "JimuAppServerSettings")
        {
            var serverBuilder = new ApplicationServerBuilder(new Autofac.ContainerBuilder(), settingName);

            _serverBuilderAction?.Invoke(serverBuilder);

            var app = serverBuilder.Build();

            var hostBuilder = new HostBuilder();

            var type        = typeof(ServerGeneralModuleBase);
            var hostModules = AppDomain.CurrentDomain.GetAssemblies()
                              .SelectMany(x => x.GetTypes())
                              .Where(x => x.IsClass && type.IsAssignableFrom(x) && !x.IsAbstract)
                              .Select(x => Activator.CreateInstance(x, app.JimuAppSettings) as ServerGeneralModuleBase)
                              .OrderBy(x => x.Priority);

            foreach (var module in hostModules)
            {
                module.DoHostBuild(hostBuilder, app.Container);
            }

            _hostBuilderAction?.Invoke(hostBuilder, app.Container);
            app.Run();
            hostBuilder.Build().Run();
        }
Exemple #2
0
        public void Run(string settingName = "JimuAppServerSettings")
        {
            var   containerBuilder = new Autofac.ContainerBuilder();
            var   serverBuilder    = new ApplicationServerBuilder(containerBuilder, settingName);
            var   hostBuilder      = new HostBuilder();
            IHost host             = null;

            serverBuilder.AddRegister(cb =>
            {
                var type        = typeof(ServerGeneralModuleBase);
                var hostModules = AppDomain.CurrentDomain.GetAssemblies()
                                  .SelectMany(x => x.GetTypes())
                                  .Where(x => x.IsClass && type.IsAssignableFrom(x) && !x.IsAbstract)
                                  .Select(x => Activator.CreateInstance(x, serverBuilder.JimuAppSettings) as ServerGeneralModuleBase)
                                  .OrderBy(x => x.Priority);
                foreach (var module in hostModules)
                {
                    module.DoHostBuild(hostBuilder);
                }

                _hostBuilderAction?.Invoke(hostBuilder, containerBuilder);
                _serverBuilderAction?.Invoke(serverBuilder);

                hostBuilder.ConfigureServices(sc =>
                {
                    serverBuilder.AddBeforeBuilder(cb =>
                    {
                        cb.Populate(sc);
                    });
                });

                host = hostBuilder.Build();
            });



            var app = serverBuilder.Build();

            app.Run();
            host?.Run();
        }