//===================================================================== public void InitializeGeneratedApplication(IRhetosRuntime rhetosRuntime) { // Creating a new container builder instead of using builder.Update(), because of severe performance issues with the Update method. _logger.Info("Loading generated plugins."); var stopwatch = Stopwatch.StartNew(); using (var container = rhetosRuntime.BuildContainer(_logProvider, _configuration, AddAppInitializationComponents)) { // EfMappingViewsInitializer is manually executed before other initializers because of performance issues. // It is needed for most of the initializer to run, but lazy initialization of EfMappingViews on first DbContext usage // is not a good option because of significant hash check duration (it would not be applicable in run-time). _logger.Info("Initializing EfMappingViews."); var efMappingViewsInitializer = container.Resolve <EfMappingViewsInitializer>(); efMappingViewsInitializer.Initialize(); var performanceLogger = container.Resolve <ILogProvider>().GetLogger("Performance." + GetType().Name); var initializers = ApplicationInitialization.GetSortedInitializers(container); performanceLogger.Write(stopwatch, "New modules and plugins registered."); ContainerBuilderPluginRegistration.LogRegistrationStatistics("Initializing application", container, _logProvider); if (!initializers.Any()) { _logger.Info("No server initialization plugins."); } else { foreach (var initializer in initializers) { ApplicationInitialization.ExecuteInitializer(container, initializer); } } } }
/// <param name="applicationFolder"> /// Folder where the Rhetos configuration file is located (see <see cref="RhetosAppEnvironment.ConfigurationFileName"/>), /// or any subfolder. /// </param> public static Host Find(string applicationFolder, ILogProvider logProvider) { var configurationFolder = FindConfiguration(applicationFolder); string rhetosRuntimePath = LoadRhetosRuntimePath(configurationFolder, logProvider); IRhetosRuntime rhetosRuntimeInstance = CreateRhetosRuntimeInstance(logProvider, rhetosRuntimePath); return(new Host { RhetosRuntime = rhetosRuntimeInstance, ConfigurationFolder = configurationFolder, }); }