ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ABP.vNext系列之模块化初探

2022-04-28 09:03:13  阅读:247  来源: 互联网

标签:vNext void OnApplicationInitialization ABP AbpModule context 初探 方法 public


​ 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有