| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- using System;
- using System.IO;
- using System.Linq.Expressions;
- using Abp.Application.Features;
- using Abp.Application.Navigation;
- using Abp.Application.Services;
- using Abp.Auditing;
- using Abp.Authorization;
- using Abp.BackgroundJobs;
- using Abp.Collections.Extensions;
- using Abp.Configuration;
- using Abp.Configuration.Startup;
- using Abp.Dependency;
- using Abp.Domain.Uow;
- using Abp.EntityHistory;
- using Abp.Events.Bus;
- using Abp.Localization;
- using Abp.Localization.Dictionaries;
- using Abp.Localization.Dictionaries.Xml;
- using Abp.Modules;
- using Abp.MultiTenancy;
- using Abp.Net.Mail;
- using Abp.Notifications;
- using Abp.RealTime;
- using Abp.Reflection.Extensions;
- using Abp.Runtime;
- using Abp.Runtime.Caching;
- using Abp.Runtime.Remoting;
- using Abp.Runtime.Validation.Interception;
- using Abp.Threading;
- using Abp.Threading.BackgroundWorkers;
- using Abp.Timing;
- using Castle.MicroKernel.Registration;
- namespace Abp
- {
- /// <summary>
- /// Kernel (core) module of the ABP system.
- /// No need to depend on this, it's automatically the first module always.
- /// </summary>
- public sealed class AbpKernelModule : AbpModule
- {
- public override void PreInitialize()
- {
- IocManager.AddConventionalRegistrar(new BasicConventionalRegistrar());
- IocManager.Register<IScopedIocResolver, ScopedIocResolver>(DependencyLifeStyle.Transient);
- IocManager.Register(typeof(IAmbientScopeProvider<>), typeof(DataContextAmbientScopeProvider<>), DependencyLifeStyle.Transient);
- AddAuditingSelectors();
- AddLocalizationSources();
- AddSettingProviders();
- AddUnitOfWorkFilters();
- ConfigureCaches();
- AddIgnoredTypes();
- AddMethodParameterValidators();
- AddDefaultNotificationDistributor();
- }
- public override void Initialize()
- {
- foreach (var replaceAction in ((AbpStartupConfiguration)Configuration).ServiceReplaceActions.Values)
- {
- replaceAction();
- }
- IocManager.IocContainer.Install(new EventBusInstaller(IocManager));
- IocManager.Register(typeof(IOnlineClientManager<>), typeof(OnlineClientManager<>), DependencyLifeStyle.Singleton);
- IocManager.Register(typeof(EventTriggerAsyncBackgroundJob<>),DependencyLifeStyle.Transient);
-
- IocManager.RegisterAssemblyByConvention(typeof(AbpKernelModule).GetAssembly(),
- new ConventionalRegistrationConfig
- {
- InstallInstallers = false
- });
-
- }
- public override void PostInitialize()
- {
- RegisterMissingComponents();
- IocManager.Resolve<SettingDefinitionManager>().Initialize();
- IocManager.Resolve<FeatureManager>().Initialize();
- IocManager.Resolve<PermissionManager>().Initialize();
- IocManager.Resolve<LocalizationManager>().Initialize();
- IocManager.Resolve<NotificationDefinitionManager>().Initialize();
- IocManager.Resolve<NavigationManager>().Initialize();
- if (Configuration.BackgroundJobs.IsJobExecutionEnabled)
- {
- var workerManager = IocManager.Resolve<IBackgroundWorkerManager>();
- workerManager.Start();
- workerManager.Add(IocManager.Resolve<IBackgroundJobManager>());
- }
- }
- public override void Shutdown()
- {
- if (Configuration.BackgroundJobs.IsJobExecutionEnabled)
- {
- IocManager.Resolve<IBackgroundWorkerManager>().StopAndWaitToStop();
- }
- }
- private void AddUnitOfWorkFilters()
- {
- Configuration.UnitOfWork.RegisterFilter(AbpDataFilters.SoftDelete, true);
- Configuration.UnitOfWork.RegisterFilter(AbpDataFilters.MustHaveTenant, true);
- Configuration.UnitOfWork.RegisterFilter(AbpDataFilters.MayHaveTenant, true);
- }
- private void AddSettingProviders()
- {
- Configuration.Settings.Providers.Add<LocalizationSettingProvider>();
- Configuration.Settings.Providers.Add<EmailSettingProvider>();
- Configuration.Settings.Providers.Add<NotificationSettingProvider>();
- Configuration.Settings.Providers.Add<TimingSettingProvider>();
- }
- private void AddAuditingSelectors()
- {
- Configuration.Auditing.Selectors.Add(
- new NamedTypeSelector(
- "Abp.ApplicationServices",
- type => typeof(IApplicationService).IsAssignableFrom(type)
- )
- );
- }
- private void AddLocalizationSources()
- {
- Configuration.Localization.Sources.Add(
- new DictionaryBasedLocalizationSource(
- AbpConsts.LocalizationSourceName,
- new XmlEmbeddedFileLocalizationDictionaryProvider(
- typeof(AbpKernelModule).GetAssembly(), "Abp.Localization.Sources.AbpXmlSource"
- )));
- }
- private void ConfigureCaches()
- {
- Configuration.Caching.Configure(AbpCacheNames.ApplicationSettings, cache =>
- {
- cache.DefaultSlidingExpireTime = TimeSpan.FromHours(8);
- });
- Configuration.Caching.Configure(AbpCacheNames.TenantSettings, cache =>
- {
- cache.DefaultSlidingExpireTime = TimeSpan.FromMinutes(60);
- });
- Configuration.Caching.Configure(AbpCacheNames.UserSettings, cache =>
- {
- cache.DefaultSlidingExpireTime = TimeSpan.FromMinutes(20);
- });
- }
- private void AddIgnoredTypes()
- {
- var commonIgnoredTypes = new[]
- {
- typeof(Stream),
- typeof(Expression)
- };
- foreach (var ignoredType in commonIgnoredTypes)
- {
- Configuration.Auditing.IgnoredTypes.AddIfNotContains(ignoredType);
- Configuration.Validation.IgnoredTypes.AddIfNotContains(ignoredType);
- }
- var validationIgnoredTypes = new[] { typeof(Type) };
- foreach (var ignoredType in validationIgnoredTypes)
- {
- Configuration.Validation.IgnoredTypes.AddIfNotContains(ignoredType);
- }
- }
- private void AddMethodParameterValidators()
- {
- Configuration.Validation.Validators.Add<DataAnnotationsValidator>();
- Configuration.Validation.Validators.Add<ValidatableObjectValidator>();
- Configuration.Validation.Validators.Add<CustomValidator>();
- }
- private void AddDefaultNotificationDistributor()
- {
- Configuration.Notifications.Distributers.Add<DefaultNotificationDistributer>();
- }
- private void RegisterMissingComponents()
- {
- if (!IocManager.IsRegistered<IGuidGenerator>())
- {
- IocManager.IocContainer.Register(
- Component
- .For<IGuidGenerator, SequentialGuidGenerator>()
- .Instance(SequentialGuidGenerator.Instance)
- );
- }
- IocManager.RegisterIfNot<IUnitOfWork, NullUnitOfWork>(DependencyLifeStyle.Transient);
- IocManager.RegisterIfNot<IAuditingStore, SimpleLogAuditingStore>(DependencyLifeStyle.Singleton);
- IocManager.RegisterIfNot<IPermissionChecker, NullPermissionChecker>(DependencyLifeStyle.Singleton);
- IocManager.RegisterIfNot<IRealTimeNotifier, NullRealTimeNotifier>(DependencyLifeStyle.Singleton);
- IocManager.RegisterIfNot<INotificationStore, NullNotificationStore>(DependencyLifeStyle.Singleton);
- IocManager.RegisterIfNot<IUnitOfWorkFilterExecuter, NullUnitOfWorkFilterExecuter>(DependencyLifeStyle.Singleton);
- IocManager.RegisterIfNot<IClientInfoProvider, NullClientInfoProvider>(DependencyLifeStyle.Singleton);
- IocManager.RegisterIfNot<ITenantStore, NullTenantStore>(DependencyLifeStyle.Singleton);
- IocManager.RegisterIfNot<ITenantResolverCache, NullTenantResolverCache>(DependencyLifeStyle.Singleton);
- IocManager.RegisterIfNot<IEntityHistoryStore, NullEntityHistoryStore>(DependencyLifeStyle.Singleton);
- if (Configuration.BackgroundJobs.IsJobExecutionEnabled)
- {
- IocManager.RegisterIfNot<IBackgroundJobStore, InMemoryBackgroundJobStore>(DependencyLifeStyle.Singleton);
- }
- else
- {
- IocManager.RegisterIfNot<IBackgroundJobStore, NullBackgroundJobStore>(DependencyLifeStyle.Singleton);
- }
- }
- }
- }
|