Abp vNext
在Abp vNext框架当中呢,模块化管理可以说是最基本的要求,他把程序按照模块进行切分,模块之间也存在相互依赖的关系,当然模块切分可以按照业务,也可以按照功能,最后一个一个组装拼接成整个项目
Abp vNext模块化生命周期
每一次建立一个新的模块各模块之间都是相互独立的,都会进行asp.net core 的服务注册等等操作。
在asp.net 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这个和asp.net core 里面是一样的
最后在程序关闭的时候执行模块销毁