ABP.vNext系列之模块化初探
作者:互联网
ABP.vNext最牛的地方其实就是在于模块化,ABP 旨在支持构建完全模块化的应用程序和系统,其中每个模块都可能具有实体、服务、数据库集成、API、UI 组件等;
在ABP中,每一个模块都应该定义自己的Module类,最简单的就是定义一个继承自AbpModule
的类。
public class BlogModule : AbpModule
{
}
AbpModule
实现了好几个接口,其中比较重要的是 IAbpModule
和 IOnApplicationInitialization
。
IAbpModule
,IOnApplicationInitialization
均定义了两个接口,其中ConfigureService
方法接管了ASP.NET Core Startup
类中的ConfigureService
方法,用来做DI注入操作,而OnApplicationInitialization
则是用来初始化请求管道相关的。
public interface IAbpModule
{
Task ConfigureServicesAsync(ServiceConfigurationContext context);
void ConfigureServices(ServiceConfigurationContext context);
}
public interface IOnApplicationInitialization
{
Task OnApplicationInitializationAsync(ApplicationInitializationContext context);
void OnApplicationInitialization(ApplicationInitializationContext context);
}
使用方法如下:
public class BlogModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
//Configure default connection string for the application
Configure<AbpDbConnectionOptions>(options =>
{
options.ConnectionStrings.Default = "......";
});
}
}
[DependsOn(typeof(AbpAspNetCoreMvcModule))]
public class AppModule : AbpModule
{
//...
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
var app = context.GetApplicationBuilder();
var env = context.GetEnvironment();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvcWithDefaultRoute();
}
}
AbpModule
类还定义了 PreConfigureServices
和 PostConfigureServices
方法,以在 ConfigureServices
之前和之后执行。同时AbpModule
类还定义了 OnPreApplicationInitialization
和 OnPostApplicationInitialization
方法,以在 OnApplicationInitialization
之前和之后执行。
值得注意的是,这些方法的执行顺序,是先执行该Module
依赖的所有其他Module
及自身的Pre
方法之后,再执行全部的ConfigureService
方法,最后再执行所有的Post
方法。
除此之外,AbpModule
还有一个OnApplicationShutdown
方法,当你想在应用程序关闭时执行一些代码的时候显得比较有用。
标签:vNext,void,OnApplicationInitialization,ABP,AbpModule,context,初探,方法,public 来源: https://www.cnblogs.com/jesen1315/p/16199798.html