Abp vNext
在Abp vNext框架当中呢,模块化管理可以说是最基本的要求,他把程序按照模块进行切分,模块之间也存在相互依赖的关系,当然模块切分可以按照业务,也可以按照功能,最后一个一个组装拼接成整个项目
Abp vNext模块化生命周期
每一次建立一个新的模块各模块之间都是相互独立的,都会进行 core 的服务注册等等操作。
在 core 原有的项目中,我们知道程序的启动项是基于startup里面的三大件进行服务注册,初始化,以及中间件等等操作的
而在abp.vnext当中呢,这些操作都留在了模块里面
在abp.vnext当中呢,所有的模块必须都去实现 AbpModule这个抽象类
namespace abp.vnext_module{//[DependsOn(typeof(DemoModule))] //确定模块之间的相互依赖关系public class DemoModule:AbpModule{/// <summary>/// 是将你的服务添加到依赖注入系统并配置其他模块的主要方法。/// </summary>public override void ConfigureServices(ServiceConfigurationContext context){//手动注入服务注入的地方Console.WriteLine("ConfigureServices");}public override void PreConfigureServices(ServiceConfigurationContext context){//SkipAutoServiceRegistration = true;//不需要自动注入 一般不这样操作Console.WriteLine("PreConfigureServices");}public override void OnPreApplicationInitialization(ApplicationInitializationContext context){Console.WriteLine("OnPreApplicationInitialization");}/// <summary>/// 初始化配置的所有模块的所有服务/// </summary>/// <param name="context"></param>public override void OnApplicationInitialization(ApplicationInitializationContext context){Console.WriteLine("OnApplicationInitialization");}public override void OnPostApplicationInitialization(ApplicationInitializationContext context){Console.WriteLine("OnPostApplicationInitialization");}/// <summary>/// 程序关闭 销毁模块/// </summary>/// <param name="context"></param>public override void OnApplicationShutdown(ApplicationShutdownContext context){Console.WriteLine("OnApplicationShutdown");}}}
看上面的执行顺序,
在真正执行的加载的时候,会先执行预加载 然后再执行ConfigureServices这个和 core 里面是一样的
最后在程序关闭的时候执行模块销毁