其他分享
首页 > 其他分享> > ABP.vNext系列之模块化初探

ABP.vNext系列之模块化初探

作者:互联网

​ ABP.vNext最牛的地方其实就是在于模块化,ABP 旨在支持构建完全模块化的应用程序和系统,其中每个模块都可能具有实体、服务、数据库集成、API、UI 组件等;

​ 在ABP中,每一个模块都应该定义自己的Module类,最简单的就是定义一个继承自AbpModule 的类。

public class BlogModule : AbpModule
{
            
}

AbpModule 实现了好几个接口,其中比较重要的是 IAbpModuleIOnApplicationInitialization

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 类还定义了 PreConfigureServicesPostConfigureServices 方法,以在 ConfigureServices 之前和之后执行。同时AbpModule 类还定义了 OnPreApplicationInitializationOnPostApplicationInitialization 方法,以在 OnApplicationInitialization 之前和之后执行。

​ 值得注意的是,这些方法的执行顺序,是先执行该Module依赖的所有其他Module及自身的Pre方法之后,再执行全部的ConfigureService 方法,最后再执行所有的Post 方法。

​ 除此之外,AbpModule 还有一个OnApplicationShutdown 方法,当你想在应用程序关闭时执行一些代码的时候显得比较有用。

标签:vNext,void,OnApplicationInitialization,ABP,AbpModule,context,初探,方法,public
来源: https://www.cnblogs.com/jesen1315/p/16199798.html