AbpWebApplication派生HttpApplication,成为应用入口。该类包含唯一属性:
1 | /// <summary> |
启动
在AbpWebApplication中重载Application_Start函数:
1 | /// <summary> |
关闭
在AbpWebApplication中重载Application_End函数:
1 | /// <summary> |
AbpBootstrapper:初始化框架
在AbpBootstrapper中包含唯一私有字段 AppApplicationManager,调用Initialize进行配置:
1 | /// <summary> |
AbpApplicationManager:记录框架和应用中所有的模块以及模块管理器,生命周期存同应用一样
1 | /// <summary> |
AbpModuleManager:加载和卸载模块,包括调用每个模块的PreInitialize、Initialize、PostInitialize函数执行相应的初始化工作
1 | public virtual void Initialize(IAbpInitializationContext initializationContext) |
模块加载原理及顺序
- 获取当前应用程序程序集及其以来程序集
- 获取程序集中所有的
ApbModule模块(是否实现IAbpModule接口),并放入模块集合中 - 找出模块的依赖模块,重复第2步,直到所有模块处理完毕
- 遍历模块集合设置每个模块的依赖模块信息
- 执行每个模块的
PreInitialize、再执行Initialize、最后执行PostInitialize - 加载完毕,执行应用逻辑。